Quick overview
This workflow runs weekly to compare customer and billing data between HubSpot, freee, and Backlog, then posts a single Slack report listing any mismatches (or confirming everything matches).
How it works
- Runs every Monday at 9:00 (or manually) and loads comparison settings such as lifecycle stages, link/tag prefixes, and IDs.
- Fetches your HubSpot account details and searches HubSpot companies in the specified lifecycle stages.
- Fetches freee partners and uses their stored HubSpot link values to batch-read the corresponding HubSpot companies.
- Fetches recent freee invoices for the configured lookback window and, if enabled, reads the target Backlog project and recent issues.
- Compares HubSpot companies, freee partners, and Backlog issues to find missing links, deleted HubSpot records, differing names/phones, duplicate partner links, and invoices without matching Backlog tags.
- Posts one formatted message to the configured Slack channel with links to affected HubSpot records or a “no mismatches found” result.
Setup
- Add HubSpot credentials (HubSpot app token / service key) with permission to read companies and account info.
- Add freee OAuth2 credentials with read access to partners and invoices, and set your freee company ID.
- (Optional) Add Backlog HTTP Query Auth credentials (API key), plus your Backlog space URL and project key, or disable invoice task checking.
- Add Slack credentials and set the target Slack channel ID, ensuring the Slack app is invited to the channel.
- Align your linking conventions (freee partner shortcut2 like
hubspot:<companyId> and Backlog issue text containing freee-invoice-<invoiceId>) and update the Config values to match.
Requirements
- freee account with an app (partners and invoices read)
- HubSpot account with a Service key (companies read)
- Backlog with an API key (optional; only for the invoice check)
- Slack app with chat:write
Customization
- Change the stages in lifecycle_stages, or the link prefixes to match how you link records.
- Set check_invoice_tasks to false to skip Backlog entirely (the Backlog nodes may then stay without a credential).
- Change invoice_lookback_days, or the schedule (for example daily).
- Compare more fields (address, e-mail) in the Compare node.
Additional info
Important limits:
- Up to 100 HubSpot customer companies, 3,000 freee partners, 2,000 freee invoices from the lookback period and 100 Backlog issues are read per run. The freee invoice list is oldest first with a limit of 100 per page, so the workflow narrows it by billing date and reads every page.
- Names are compared after normalization; a company that really changed its name will be reported until both sides match.
What I tested (n8n 2.36.8, HubSpot free account, a freee test company, a Backlog space during its trial, a Slack test channel; all data made up): all five kinds were reported from real data — two customer companies without partners, a partner pointing to a deleted company, two name differences, a company with two partners, and (with a deliberately wrong invoice tag) six invoices without issues. With check_invoice_tasks off and no Backlog credential, the run finished and the invoice check was skipped. I did not test more than 100 companies or invoices.