Salesforce integration: mapping work orders to Opportunities

I am configuring the FieldPulse to Salesforce integration for our organization. I need to establish a bidirectional mapping between FieldPulse work orders and Salesforce Opportunities. However, I am encountering difficulties with the field mapping configuration screen.

Current Environment:

  1. FieldPulse account: Production, API version v1
  2. Salesforce edition: Enterprise
  3. Integration status: Connected, OAuth authorized

Specific Issues:

  1. The field mapping interface does not display all standard Opportunity fields (e.g., "StageName", "CloseDate", "Amount")
  2. Custom fields created in FieldPulse do not appear in the mapping dropdown
  3. The documentation indicates bidirectional sync is supported, but I cannot locate the configuration toggle for sync direction

Questions:

  1. Is there a required field configuration in Salesforce that must be completed before FieldPulse can enumerate available Opportunity fields?
  2. Are there specific Salesforce API permissions required beyond the standard OAuth scopes?
  3. What is the expected latency for bidirectional updates — i.e., if a work order status changes in FieldPulse, what is the SLA for the corresponding Opportunity update in Salesforce?

I have confirmed that the connected Salesforce user has System Administrator profile and that API access is enabled. I can reproduce this behavior consistently across multiple browser sessions. I have reviewed the Salesforce integration guide but it does not address these specific configuration scenarios.

Ticket reference: FP-INT-2847 (opened with support 48 hours ago, awaiting escalation).

Parents
  • Heads up on the bidirectional piece — we've been running this in prod for about 6 months and found some edge cases.

    The "Bidirectional" setting is optimistic, i.e., last-write-wins with no conflict resolution. If you have automation in Salesforce (Process Builder, Flows) that touches Opportunities, you'll get race conditions. We ended up going Push-to-Salesforce only and using a custom Apex trigger to push changes back to FieldPulse via webhook when we actually need it.

    Also worth noting: the Amount field mapping is string-to-number conversion, so if you have any formatting in FieldPulse (currency symbols, commas) it'll fail silent and write null. We pre-process in a middleware layer now.

    YMMV but bidirectional sounds good on paper and was more headache than it was worth for us.

  • Thank you for this insight. I have confirmed that we have multiple Flows triggered on Opportunity update. From a governance perspective, this is concerning.

    Does your middleware approach use the FieldPulse outbound webhook, or did you implement a polling mechanism? I need to understand the failure modes if the webhook delivery fails.

  • We use the outbound webhook — work_order.status_changed and work_order.updated. FieldPulse retries 3 times with exponential backoff (roughly 30s, 2min, 5min) then gives up. We queue failed deliveries in SQS and alert if the DLQ builds up.

    One gotcha: the webhook payload doesn't include the full Salesforce Opportunity ID, just the FieldPulse work order ID. We maintain a lookup table in DynamoDB that maps them, populated from the initial push. Worth building that in from the start.

Reply
  • We use the outbound webhook — work_order.status_changed and work_order.updated. FieldPulse retries 3 times with exponential backoff (roughly 30s, 2min, 5min) then gives up. We queue failed deliveries in SQS and alert if the DLQ builds up.

    One gotcha: the webhook payload doesn't include the full Salesforce Opportunity ID, just the FieldPulse work order ID. We maintain a lookup table in DynamoDB that maps them, populated from the initial push. Worth building that in from the start.

Children
No Data