Skill #24 — Integrations (Stripe → HubSpot, 2026)

Written 30 Oct 2026 (bizdev run cd3f1a8c).

What we tested (30 Oct, dry run)

Lessons

  1. connected_apps returns only the first 8 KB of a response, and one Stripe event is ~2.5 KB: filter by type and keep limit ≤ 5, then parse leniently (fields deep in the object can be cut off: the first expired row came back without its payment_link).
  2. Expired sessions are the only abandoned-checkout signal we have, but some are our own: every GET of a buy.stripe.com link creates a session (CONVENTIONS 29 Oct). Before reading an expired session as a lost buyer, check the run logs for a link check at that minute (24 h earlier).
  3. A real sale shows as checkout.session.completed with payment_status=paid; the root tells the project lead at once; buyers_sync.py then records the buyer so we never sell the same book twice.
  4. Webhooks would be instant, but they need an endpoint and a signing secret on the Worker (an owner step: the STRIPE_KEY secret is still unset). Polling events every run is the zero-setup route until then.

How we apply it

Raw Markdown: 24.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all