Vitally has the potential to integrate with a slew of different tools, including Segment, Stripe, Salesforce, etc. One of the main goals for plugging these tools into a product like Vitally is to have a centralized view of your customer data (i.e. 360° profiles).
An external ID is simply a unique ID given to an account or user. It is used to accurately tie customer data from one tool (e.g. from Salesforce) with another (e.g. from Stripe).
Trying to organize data from disparate systems is a complex problem. One mistake, and you have duplicate accounts in Vitally 😔. The best way to avoid that is to track an external ID in all your systems.
What should my external ID be?
99% of the time, we recommend using the primary ID given to the account/user in your database. If you aren't familiar with how databases work, whenever data gets created it is given a unique ID in the table it is created within. That ID is typically best to push to all your other systems.
How does Vitally use the external ID when integrating with other tools?
When setting up integrations in Vitally, you'll commonly be asked if/how an account's or user's external ID is tracked in the tool being integrated. How to track external IDs varies per integration.
Some systems, like Intercom, have standard fields for setting external IDs (e.g. the company_id field for Intercom companies and the first argument passed in Segment group calls). However, many don't. For example, in Stripe, we recommend using Stripe's metadata to add external IDs since they don't have a standard ID field you can set.
As we pull in data from your integrations, we grab the external ID off the record sent to us from the tool. We then do a lookup across the accounts/users that already exist in Vitally for an account/user with the same ID. If we find one, we update that account/user in Vitally. If not, we create a new one.
Note: external ID matching in Vitally is case-insensitive. For example, acme-corp and ACME-CORP are treated as the same ID and will resolve to the same account. This means changing the casing of an external ID across your integrations will not create duplicate accounts.
⚠️ Changing an external ID after it's been configured for an integration can break existing data mappings and require cleanup. Because of this, Vitally shows a confirmation prompt before saving a change to your external ID configuration. For integrations that support it, the prompt also displays sample values so you can review what's changing before confirming.
Changing the external ID on an existing record
An existing organization's, account's, or user's external ID can be changed, but only by Vitally Support. There is no way to edit it yourself in the app or through the API.
To request a change, send Support a CSV with two columns, the record's current external ID and the new external ID, with one row for each record you want updated. Support applies the change on the backend, so the record keeps its history.
Before requesting it, make sure the new external ID is already populated in your other integration sources. If the new value is not present in the systems that sync into Vitally, the link breaks and that record stops syncing.
Updating the ID is usually better than creating a new record with the new ID and merging the old one into it, because a merge deletes the secondary record and some of its historical data does not carry over.

