Best Practices

Join Opportunities with Pipelines

The Opportunities entity returns pipeline IDs, not names. Add Pipelines as a second source in the same data flow and use a Join transformation on `pipelineId` to make your reports human-readable.

Use Append for multi-account reporting

If you manage multiple GoHighLevel sub-accounts, create one data flow per account and use Append to stack them into a single destination sheet or table. Add a custom column to tag each row with the account name.

Join Contacts with Opportunities

Opportunities don't include contact details like email or lead source. Join on `contactId` to enrich your deal data with contact-level attributes for deeper sales analysis.

Data refresh and scheduling

Always run manually first

A successful manual run is required before you can set up a schedule. Use the first run to verify row counts and check that custom fields are appearing as expected before automating.

Match refresh frequency to your reporting needs

Sales dashboards updated throughout the day benefit from 15-minute or hourly refreshes (Business plan). Weekly revenue or invoice reports don't need frequent syncs — daily is usually enough and keeps API usage lower.

Performance optimization

Filter Appointments and Tasks by Contact ID

If you only need data for specific contacts, enter their Contact IDs in the parameter field. This fetches far fewer records than pulling all appointments or tasks across the account.

Don't run overlapping flows for the same account

Running multiple data flows against the same GoHighLevel account at the same time increases the risk of hitting GHL's API rate limits. Stagger your schedules by at least a few minutes.

Common pitfalls

triangle-exclamation

Do

  • Join Opportunities + Pipelines to get readable pipeline names

  • Use Contact IDs to scope Appointments and Tasks to specific records

  • Verify row counts on the first manual run before scheduling

  • Store formula logic somewhere outside Coupler.io — there is no version history or formula recovery if changes are lost

Don't

  • Expect custom fields from objects other than Contacts, Opportunities, or Companies

  • Run multiple flows against the same GHL account at the same time

  • Assume a timestamp offset is a data bug — check timezone settings first

  • Connect at sub-account level if you need cross-account reporting

Last updated

Was this helpful?