Sync a Custom ID property to Hubspot contacts

v1.0.4 2016-08-02 17:56 UTC

This package is not auto-updated.

Last update: 2020-10-16 21:23:02 UTC


Version License Travis Test Coverage

You find you need to do anything fancy but there is no way to uniquely identify users apart from their email address? Well here is a hokey-pokey work-around.

What this does is just base64 encodes the vid property to a custom property that we can actually use. I don't like the idea of directly exposing the vid. So this obfuscates it slightly. However, it is still easy to decode in pretty much any programming language as far as I am aware of.

One example of a use case is adding it as query string in a url from a link in an email. We can then use it to identify the user that clicked the email on the target page.


Using composer:

composer require focuscanada/hubspot-custom-id


1. Create a new contact property for the custom ID

Name it something like custom_id, and make it a single line text field.

Custom property

2. Create a new smart list

You will need to create a new smart list that contains only contacts where the custom_id property is unknown. Remember the ID of that list. (It should be the number as the last component of the url when editing the list)

list url

3. Use it (example)

require __DIR__.'/vendor/autoload.php';

use Focus\HubspotId\SyncService;
use Fungku\HubSpot\HubSpotService;

$hubspot_api_key = 'demo';
$hubspot_list_id = '12345';
$hubspot_property = 'custom_id';

$hubspot = HubSpotService::make($hubspot_api_key);
$sync = new SyncService($hubspot, $hubspot_property);

4. Make a workflow (optional)

If you don't want it to run just as something like a cron job, or manually. Then you can deploy it to a server somewhere and create a workflow to access your script as a webhook.