Syncing Deals to Jobs
This guide shows you how to sync CRM deals/opportunities to field service jobs. This creates a seamless handoff from sales to operations.
Overview
Goal: When a deal is won in your CRM, automatically create a job in your field service system so operations can begin work immediately.
Common Use Cases:
- HubSpot Deals → Jobber Jobs
- Pipedrive Deals → Jobber Jobs
- Salesforce Opportunities → Jobber Jobs
Time Required: 20-30 minutes
Before You Start
Ensure you have:
- [ ] Contacts/Clients already syncing between systems (see guide)
- [ ] Understanding of your deal stages and job statuses
- [ ] Both platforms connected to FluxCascade
Step 1: Map Your Stages
Before creating the mapping, align your CRM stages with job statuses:
Example: HubSpot to Jobber
| HubSpot Deal Stage | Jobber Job Status | Create Job? |
|---|---|---|
| Appointment Scheduled | — | No |
| Qualified to Buy | — | No |
| Presentation Scheduled | Lead | Yes |
| Contract Sent | Quote Sent | Yes |
| Closed Won | Approved | Yes |
| Closed Lost | Archived | Only if exists |
Example: Pipedrive to Jobber
| Pipedrive Stage | Jobber Job Status |
|---|---|
| Lead In | Lead |
| Contact Made | Lead |
| Proposal Made | Quote Sent |
| Won | Approved |
| Lost | Archived |
Step 2: Create the Mapping
- Go to Mappings → New Mapping
- Configure:
Source:
- Connection: Your CRM (HubSpot, Pipedrive, etc.)
- Object: Deals (or Opportunities)
Target:
- Connection: Jobber
- Object: Jobs
Direction: Source to Target (one-way)
Jobs are typically created from deals, not the other way around. Use one-way sync.
Step 3: Configure Field Pairs
Essential Fields
| CRM Field | Jobber Field | Notes |
|---|---|---|
dealname | title | Job title from deal name |
dealstage | job_status | Use value_map transform |
amount | total | Deal value → Job total |
closedate | start_at | Expected close → Job start |
description | instructions | Job instructions |
Stage Mapping Transform
For the dealstage → job_status field, configure a value map transform:
Transform: value_map
Mappings:
"presentationscheduled" → "Lead"
"contractsent" → "Quote Sent"
"closedwon" → "Approved"
"closedlost" → "Archived"
Default: "Lead"
Step 4: Link to Existing Client
Jobs need to be associated with a client. Configure the relationship:
-
Add a field pair for client association:
- Source: Associated Contact ID (from deal)
- Target:
client_id
-
Or use email matching:
- The contact's email from the deal
- FluxCascade finds the matching Jobber client
Prerequisite: Contacts/Clients must already be synced. Run the HubSpot + Jobber guide first.
Step 5: Add Filters
Only sync deals that should become jobs:
Filter by Stage
Only sync deals past a certain stage:
Filter: dealstage IN [
"presentationscheduled",
"decisionmakerboughtin",
"contractsent",
"closedwon",
"closedlost"
]
Early-stage deals don't need jobs yet.
Filter by Pipeline (Optional)
If you have multiple pipelines:
Filter: pipeline = "sales-pipeline"
Only sync from relevant pipelines.
Step 6: Configure Matching
Set up how to identify existing jobs:
Matching Strategy:
- Use Deal ID stored in Jobber custom field
- Or match by deal name + client combination
Recommendation: Store the CRM Deal ID in a Jobber custom field for reliable matching.
Step 7: Test and Deploy
-
Test with a few deals:
- Run test sync with filter for specific deals
- Verify jobs created correctly
- Check stage mapping works
-
Review the results:
- Open created jobs in Jobber
- Verify all fields populated
- Check client association
-
Enable scheduling:
- Set sync frequency (hourly recommended)
- Enable real-time sync for immediate job creation
Syncing Job Status Back (Optional)
To update deal status when jobs complete:
-
Create a second mapping (reverse direction):
- Source: Jobber Jobs
- Target: CRM Deals
- Direction: Source to Target
-
Map job status back to deal stage:
- Jobber "Complete" → CRM "Closed Won"
- Jobber "Archived" → CRM "Closed Lost"
-
Use filters to only sync completed/archived jobs
Common Scenarios
Scenario: Deal Won → Job Created → Work Completed
1. Sales closes deal in HubSpot (stage: Closed Won)
2. FluxCascade creates job in Jobber (status: Approved)
3. Field team completes work in Jobber (status: Complete)
4. (Optional) FluxCascade updates HubSpot deal notes
Scenario: Deal Lost After Job Created
1. Job exists in Jobber (from earlier deal stage)
2. Deal marked as Lost in HubSpot
3. FluxCascade updates Jobber job to Archived
4. Field team sees job is cancelled
Best Practices
1. Sync Contacts First
Always ensure contacts/clients sync before deals/jobs. Jobs need existing clients.
2. Use Meaningful Job Titles
The deal name becomes the job title. Ensure your team uses descriptive deal names:
✓ "Smith Residence - HVAC Installation"
✗ "New Deal"
3. Don't Sync Too Early
Wait until deals reach a certain stage before creating jobs. Early-stage deals may never close.
4. Store Cross-References
Store IDs in custom fields on both sides:
- HubSpot: Store Jobber Job ID
- Jobber: Store HubSpot Deal ID
This makes troubleshooting easier.
5. Consider Job Timing
Use the deal close date or a custom date field for job scheduling. Don't create jobs with past dates.
Troubleshooting
Jobs Not Associating with Clients
Cause: Client doesn't exist in Jobber
Solution: Ensure contact/client sync is running. Create the client first.
Duplicate Jobs Created
Cause: Matching not finding existing job
Solution: Use deal ID for matching, store in custom field.
Stage Mapping Not Working
Cause: Value map doesn't include all stages
Solution: Add all possible stage values to the transform mapping.
Next Steps
- Address Mapping – Handle service addresses
- Error Handling – Handle sync failures
- Webhooks – Real-time job creation