Export all work order data to data warehouse

From a governance perspective, our organization requires comprehensive historical work order data for compliance reporting and business intelligence initiatives. We are evaluating options for establishing an automated pipeline from FieldPulse to our Snowflake data warehouse.

It is worth noting that our current volume is approximately 50,000 work orders annually across 12 regional branches, with projected 40% year-over-year growth. We require:

  • Full historical export (5+ years retention)
  • Incremental daily sync capability
  • Preservation of audit timestamps and user attribution
  • Custom field inclusion without truncation

We have considered the native CSV export functionality documented in Exporting Data to CSV, but this appears unsuitable for automated pipelines at our scale.

Specifically, we seek clarification on:

  1. Does the FieldPulse API support cursor-based pagination for reliable incremental extraction without missed records during high-activity periods?
  2. Are there documented rate limits that would constrain a daily full-table synchronization approach?
  3. Is there a recommended pattern for handling deleted work orders (soft-delete visibility versus hard-delete propagation)?
  4. Does FieldPulse offer a direct data warehouse connector, or must all integration route through the REST API?

I have confirmed that our technical team has provisioned API credentials with appropriate scoping. We are prepared to implement a custom ETL process if necessary, but prefer to align with established patterns before committing engineering resources.

Reference: Our security review indicates that API Rate Limits and Best Practices provides partial guidance, but does not address data warehouse-specific considerations.

Parents
  • YMMV on the offset pagination — we tried exactly what Eli described and hit edge cases during our fiscal year-end when dispatchers were bulk-updating hundreds of records. The stable sort on updated_at held, but we saw some records with identical timestamps get reordered across pages.

    Our workaround: we added a secondary sort on id and dedupe aggressively in staging. Heads up that the API doesn't document this clearly, but sort=updated_at,id does work.

    Also worth noting: custom fields come back as a nested object in the JSON, not flat columns. Your ETL will need to handle that flattening unless you want variant schemas in Snowflake.

    "custom_fields": {
      "cf_123": {"label": "Equipment Type", "value": "HVAC-R"},
      "cf_456": {"label": "Warranty Expiry", "value": "2026-03-15"}
    }

    We ended up building a type-2 slowly-changing dimension table for the custom fields specifically since they change more often than the base work order data.

Reply
  • YMMV on the offset pagination — we tried exactly what Eli described and hit edge cases during our fiscal year-end when dispatchers were bulk-updating hundreds of records. The stable sort on updated_at held, but we saw some records with identical timestamps get reordered across pages.

    Our workaround: we added a secondary sort on id and dedupe aggressively in staging. Heads up that the API doesn't document this clearly, but sort=updated_at,id does work.

    Also worth noting: custom fields come back as a nested object in the JSON, not flat columns. Your ETL will need to handle that flattening unless you want variant schemas in Snowflake.

    "custom_fields": {
      "cf_123": {"label": "Equipment Type", "value": "HVAC-R"},
      "cf_456": {"label": "Warranty Expiry", "value": "2026-03-15"}
    }

    We ended up building a type-2 slowly-changing dimension table for the custom fields specifically since they change more often than the base work order data.

Children
No Data