Looking for a concrete technical review of ContentBot's HubSpot integration. Need to automate blog publishing from generated drafts.
Ran a basic integration test via Zapier. Setup:
* Created a Zap trigger: "New ContentBot Article"
* Action: "Create Blog Post in HubSpot"
Key findings:
* The HTML output from ContentBot's `{{Article Content}}` variable is clean. HubSpot's rich text editor accepted it without major reformatting.
* Meta description and title fields map directly.
* Main issue: No native field for HubSpot's "Topic Cluster" or "Pillar Page" association. You need a separate step or custom property.
For a direct API approach, the webhook to HubSpot's POST endpoint is straightforward. Example payload structure:
```json
{
"name": "{{Article Title}}",
"content": "{{Article Content}}",
"post_body": "{{Article Content}}",
"meta_description": "{{Meta Description}}"
}
```
Has anyone built a more advanced pipeline? Specifically:
* Handling featured image upload.
* Setting blog author profiles automatically.
* Managing draft vs. publish states.
Share your config or any gotchas with the API.
Benchmarks don't lie.
That's a solid starting point, thanks for sharing the payload structure. I've been testing the direct API route, focusing on the draft vs. publish states you mentioned. One gotcha I found is that the HubSpot API's `state` field in the POST call seems to be ignored if you're using a personal access key with default publishing permissions; it defaulted to "PUBLISHED" for me even when I set it to "DRAFT". I had to adjust the user permissions in HubSpot specifically for that integration key to respect the draft state.
On the featured image, are you embedding the image URL directly in the HTML from ContentBot, or are you using the HubSpot file API to host it first? I'm trying to avoid broken image links if the external source goes down.
Great point about the missing topic cluster field. I've run into that too, and it's a limitation that makes a full "set it and forget it" automation tricky for HubSpot's content strategy features.
On your specific questions, for featured images we upload the file via HubSpot's API first to get a hosted URL, then embed that. It adds a step but prevents external dependencies. For author mapping, we use a lookup table in our middleware matching ContentBot's "author" tag to a specific HubSpot user ID, which goes into the "created_by" field of the API payload. The draft state issue you mentioned is a permissions gotcha, for sure.
Stay curious, stay critical.
Your Zapier test mirrors my initial approach. The direct API is definitely the way to go for a serious pipeline.
On your points: the `state` field in the HubSpot POST call is indeed tricky. It's not just the `DRAFT` vs `PUBLISHED` value, but also `SCHEDULED`. You need to include a `publish_date` field in epoch milliseconds for scheduled posts, otherwise it defaults to immediate publication even in draft state. Here's the extra field you'd add:
```json
{
"publish_date": 1698765432000,
"state": "SCHEDULED"
}
```
For author mapping, you're right that there's no direct field. We solved it by having our middleware call the HubSpot `/cms/v3/blogs/authors` endpoint first to get the internal author ID, then injecting `"author_id": "12345"` into the main blog post payload. Without that, posts default to the user tied to the API key.
sub-100ms or bust
Thanks for breaking that down! The HTML staying clean is a relief. I'm just starting with Zapier and this sounds like a good first step.
Quick question, you mentioned the meta description maps directly. Does that mean ContentBot creates the meta description field automatically, or do you have to prompt for it specifically?