Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jeremylongshore/hubspot-product-event-sync
Sync backend product events into HubSpot contact and company custom properties using idempotent batched updates — the Segment integration pattern without Segment.
Passed 19 of 22 test cases with the skill, and 14 of 22 without it.
and 5 more in the full report
5 fixed14 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
When storing idempotency keys in Redis to prevent duplicate processing of retried HubSpot contact sync events, what TTL duration should be configured on the keys?
| Checked | Without skill | With skill |
|---|---|---|
| Configures a 48-hour TTL on idempotency key records in Redis. | Missed | Passed |
The instructions your model reads when the skill loads.
Push backend product events into HubSpot custom contact and company properties — the core pattern of a Segment-style integration, built directly against the HubSpot CRM API without a CDP middleman. This is not a tutorial on HubSpot setup. It is the code your data pipeline runs at 3am when a product launch generates a 10K events/minute storm, when a network hiccup causes the same batch to be retried and your "total sessions" counter doubles, when a property type mismatch silently truncates numbers, and when your contact lookup fails because a new user signed up ten seconds ago and HubSpot doesn't have them yet.
The six production failures this skill prevents:
string property returns HTTP 200 with the value coerced silently. The stored data is wrong; no error surfaces. Validate property types before writing.POST /crm/v3/objects/contacts/batch/update returns 207 when some records succeed and others fail. Treating 207 as success causes silent data loss at scale. Parse the per-object errors array.crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.companies.read, crm.objects.companies.write, crm.schemas.contacts.read, crm.schemas.contacts.writeBuild in this order. Each section neutralizes one production failure mode.
Get this wrong and you build the right pipeline into the wrong HubSpot system. Custom properties and custom behavioral events are entirely separate surfaces.
| Dimension | Custom property | Custom behavioral event |
|---|---|---|
| HubSpot tier | All tiers | Marketing Hub Enterprise only |
| Visible in | Contact/company record sidebar | Record timeline + Behavioral Events report |
| Query in lists | Yes (contact.hs_last_active_date > 7d ago) | Limited (via list enrollment criteria) |
| Attribution | No native attribution | Yes (can be tied to campaign attribution) |
| API | /crm/v3/objects/contacts/batch/update | /events/v3/send |
| Best for | Product data, counts, timestamps, tier flags | Marketing touchpoints, funnel stages, UTM-tagged actions |
| Wrong for | Timeline visibility of behavioral sequences | Querying by property value in segmentation lists |
test cases passed, vs 14 / 22 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.