Salesforce and HubSpot CRM integrations
Connect Salesforce or HubSpot to sync trader data into your CRM, with new widget dev mode, a custom Store widget, and global widget styling controls.
01 ·Sync loyalty data into Salesforce and HubSpot
Returning.AI now connects directly to Salesforce and HubSpot. Once your team authenticates the integration from the admin panel, you map your CRM's contact fields to trader profile fields in Returning.AI and set up a sync. From that point, trader data flows into your CRM on a regular schedule, or on demand whenever you trigger a manual sync. Each mapped field can carry its own sync schedule and an optional read-only flag, so one field can refresh hourly, another daily, and fields you never want overwritten stay locked.
Both integrations follow the same pattern your team already knows from Snowflake: connect, configure field mapping, then run syncs with optional filters that limit a sync to the traders you care about. The Salesforce integration can read from your standard objects such as Contacts and Accounts, and you can scope each sync to traders where certain fields are empty, so you fill gaps without overwriting data you already have. HubSpot works the same way, drawing from your contact and custom fields.
What the sync covers:
- Any field available in your Salesforce or HubSpot contact record, including custom fields
- Filtering so syncs only run for traders where specific fields are missing or match a condition
- Scheduled syncs that run on their own, and manual syncs you trigger from the admin panel
Your loyalty data is only useful for follow-up if it reaches the system your team works in. When a trader moves up a tier or finishes a milestone, that signal now lands in Salesforce or HubSpot on its own, so the team segmenting and contacting traders works from current records and stops pulling manual exports to stay in sync.
02 ·New traders register directly as HubSpot contacts
With HubSpot connected, registration creates a HubSpot contact for every new trader at the moment they sign up. The contact is created with the trader's community name and join date already populated, so it arrives in HubSpot ready to use rather than as a blank record waiting for the next sync to fill it in. Your acquisition team sees new traders appear in HubSpot without waiting for a scheduled sync or a manual run.
A new trader is most reachable in the first hour after signup. Because the HubSpot contact exists the moment they register, your onboarding and nurture sequences start then, not after the next scheduled sync, so you reach a new sign-up while they are still paying attention.
03 ·Widget development mode and test-user access
Each widget in the admin panel now has an environment toggle: live or development. Live mode works exactly as today. In development mode, the widget accepts requests from localhost so your team can build and test integrations without touching your production setup. It also accepts requests from your existing whitelisted domains when those requests come from a test account. In both cases, development mode limits access to a specific list of traders you configure, so only the accounts you designate for testing can see the widget during the build.
Development mode applies across all widget types: the channel widget, currency overview, referral widget, custom widgets, and the store widget. Existing widgets with no mode set default to live and are unaffected.
Testing a widget against production puts real traders in front of unfinished work. Development mode runs the widget on localhost for a short list of accounts you pick, so your team builds and checks an integration in private and flips it to live only once it holds up.
04 ·Store as a custom widget, with global styling
The store is now available as a custom widget type. You create it the same way as any other custom widget, and the store's product cards pick up your Section Styling settings. This sits alongside a broader Widget Global Styling overhaul that applies to all widget types.
The widget configuration screen moved to a three-panel layout: your settings on the left, a live preview in the centre, and a new Style tab on the right. The Style tab adds two new global styling controls that apply across all widget types:
- Widget Background: sets the background colour, corner rounding, padding, and stroke for the outer widget frame
- Section Styling: sets the same properties for each content section inside the widget
- Stroke control: set thickness, colour, and style, and choose whether the stroke applies to all four sides or specific sides individually
Each styling section can be collapsed or expanded independently, and a reset button appears on any section you have changed so you can revert a section without clearing everything else.
Running several widget types on your site used to mean styling each one separately and hoping they matched. The global controls set the frame, sections, and stroke once across every widget type, and the live preview shows the result as you change it, so you catch a mismatch on screen and the widgets read as one site by the time you save.
05 ·Dynamic data in Custom Workflow HTTP node authentication
The HTTP node in Custom Workflows now accepts dynamic values from the data selector in its authentication input. Previously, the auth field only accepted a fixed value you typed in. Now you can reference any field available in the workflow's data context, so the node can draw its authentication value from the workflow's data context at run time.
This build tidies up the Spin the Wheel mission settings in the admin panel: the condition list no longer shows a duplicated option, and conditions that use greater-than-or-equal and less-than-or-equal operators save as expected.
7 MayThe Spin the Wheel spin history section has layout and copy updates: the date format is now dd/mm/yy, the scroll bar no longer appears when the history list is short, and the streak label now uses the right wording. A countdown timer now appears on spins with fewer than 24 hours remaining.
7 MayThird-party data syncs for Salesforce, HubSpot, and Snowflake now run in a dedicated service, so large or slow sync jobs do not affect the performance of the rest of the platform.
7 May