Package Library
Installable package

Activity Sync

Sync call, chat, email, or sms interactions from any source to your CRM as activity records, and enrich with any data you want.

@quickflo/activity-syncby @quickflov1.5.0
See how Activity Sync works

Package overview

Overview

Create or update CRM activity records from a webhook. Salesforce is included; other CRMs connect through an adapter workflow.

Get started

  1. Install Activity Sync.
  2. Set the salesforce environment variable to your Salesforce connection, such as {{ $connections.salesforce }}.
  3. Choose a Salesforce Task field to store the activity's session ID. Mark it Unique to prevent duplicate records.
  4. Send an activity to the installed activity-sync webhook.
  5. Open the Activity Sync dashboard to check the result.

Send an activity

{
  "session_id": "call-123",
  "session_id_field": "Five9__Five9SessionId__c",
  "field": {
    "Subject": "Customer follow-up",
    "Description": "Call notes"
  }
}

Use the same session_id to update an existing activity. Set session_id_field to the Task field you chose during setup. Add any CRM fields you want to save inside field, including WhoId or WhatId when linking Salesforce records.

The optional provider defaults to salesforce.

Check the result

The webhook acknowledges receipt. The dashboard shows the write outcome:

  • Success: the record was saved.
  • Recovered: the record was saved after an automatic recovery attempt.
  • Error: the write failed or the adapter returned an invalid result. Check the explanation before resending.

Salesforce settings

In activity_sync_settings, open the salesforce record. The saveTaskWithoutInvalidWhoIdOrWhatId setting allows saving when neither supplied relationship is valid. It is enabled by default. Turn it off to reject writes when none of the supplied relationships is valid.

Use another CRM

Select your adapter under Create or Update Activity in Custom CRM, then include its provider name in webhook payloads, such as "provider": "hubspot". Follow the adapter's instructions for connections and field names.

To build an adapter, copy activity-sync-custom-crm-adapter-template, add your CRM's lookup, create, and update operations, then select that workflow in the extension. The template includes the result format Activity Sync expects.

If you only use another CRM, skip the Salesforce setup and disable the daily activity-sync-refresh-salesforce-task-schema-daily trigger.

Customize

  • Enrich Activity Fields: add or override fields before saving.
  • Handle Failed Activity: send failed activities for review or raise an alert.

What’s inside

One install, the complete system.

Workflows

6 included

  • Activity Sync
  • Activity Sync Refresh Salesforce Task Schema
  • Activity Sync Enrich Fields
  • Activity Sync Write Salesforce Task
  • Activity Sync Handle Failed Activity
  • Activity Sync Custom CRM Adapter Template

Triggers

2 included

  • Activity Sync
  • Activity Sync Refresh Salesforce Task Schema Daily

Dashboards

1 included

  • Activity Sync

Data stores

3 included

  • Activity Sync History
  • Activity Sync Settings
  • Activity Sync Schema Cache

Configure during install

Set up what it needs. QuickFlo handles the wiring.

You’ll connect or provide these requirements during guided setup, before anything changes.

1 environment valueProvide the values this package needs to run.

Extension points

Designed for your team to make their own.

This package includes clearly defined areas your team can customize without forking or rebuilding the rest of the solution.

Enrich Activity Fields

Customize when needed

Return data containing provider field overrides. Salesforce fields are validated against its Task schema; other providers receive the merged fields unchanged.

Create or Update Activity in Custom CRM

Customize when needed

Create or update a record in your CRM, using session_id to avoid duplicates. On success, return status, action (create/update), recordId, and fields (the final write fields). On failure, return status: error and error: {code, message}. Use recovered only when you also return recovery details. recordUrl and integration diagnostics are optional. Activity Sync supplies shared audit metadata.

Handle Failed Activity

Customize when needed

Customer extension point. Runs inline after Activity Sync records a terminal failure, without a separate execution charge. Use errorCode to route failures. Dispatch a background sub-workflow inside this handler only when needed.