- Brand
- beehiiv
- Category
- Marketing
- Primary Subcategory
- Email & SMS Lifecycle Marketing Automation
Integration details
Description
Connect your beehiiv workspace and work on it from ChatGPT. Draft, edit posts and templates. Create podcast shows and episodes and read their transcripts and stats. Run communities: publish and pin posts, moderate reports, manage members and send invites. Build email automations, journeys and A/B variants. Manage subscriptions, segments, tags, custom fields and signup flows. Handle products, tiers, paywalls, orders, the ad network and the sponsor network. Set up recommendations, referral programs, polls and surveys. Read analytics for posts, podcasts and earnings. Changes are written straight to your beehiiv workspace. A beehiiv account is required. Reading your data works on the free plan; making changes requires a paid plan.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Email & SMS Lifecycle Marketing Automation
- Secondary Subcategories
- None listed
- Brand
- beehiiv
- Access
- Account required
- First tracked
- 2026-09-19
- Tool count
- 241
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for beehiiv
Get updates when beehiiv’s Discoverability Score or category rank changes.
Competing in ChatGPT Email & SMS Lifecycle Marketing Automation
View Category241 tools agents can invoke
Add a single step to an existing automation's flow. Works on live (published) automations: the step is added to a staging workspace (a draft copy) and only affects the live automation once you publish. Reference the parent step via `parent_id`; live step IDs are accepted and mapped to their staging copy. Call `get_automation_schema` for per-step-type param shapes. For `send_email`, pass `subject_line` to auto-create a placeholder email, or `email_message_id` to attach an existing one. Configure a `webhook` step's destination with `update_automation_step` after creating it. When the response reports the automation live with unpublished changes, relay its `publish_instructions`.
add_automation_step
Add every subscriber in a segment to a newsletter list. Runs in the background against the segment's current members. Poll `get_subscription` (with include_newsletter_lists) or the list's `list_subscriptions` to confirm membership.
add_segment_to_newsletter_list
Apply to a paid recommendation offer, asking that publication for permission to recommend them to your subscribers in exchange for a payout per subscriber you send them. Find offer_id with discover_publications - it is the `offer.id` on a publication that pays to be recommended. Applying normally puts nothing in front of your subscribers yet: the offer's owner reviews the application, and only an accepted one becomes a live recommendation. The exception is an offer whose `offer.auto_accepts_you` is true, which accepts on submission and starts recommending them to your subscribers straight away - confirm with the publisher before applying to one of those. Track an application with list_paid_recommendation_applications; once accepted it appears in list_recommendations with boosted: true. message is the pitch the reviewer reads, so say who your audience is and why they are a good match. The reviewer sees only your message and your publication, so applying without one gives them nothing to judge. Each publication can only submit a limited number of applications per month, and only one application per offer at a time.
apply_to_paid_recommendation
Ban or unban a community member. Banning blocks them from posting, commenting, and DMs; pass banned=false to lift a ban. Defaults to banning. Idempotent - a member already in the requested state is left unchanged.
ban_community_member
Compose a single website page using the template-builder factory (tb) - deterministic, rule-validated output - and write it as that page's DRAFT content. The live published page is never changed; a human promotes via the beehiiv advanced builder. `category` must match the identified page's actual category, which guards against overwriting e.g. a `home` page with `archive`-shaped content. If tb's page-scoped rules report errors they come back so you can adjust the spec and retry.
build_site_page
Cancel a scheduled community post, removing it before it publishes. Any scheduled post of the publication can be cancelled, whoever scheduled it, until it starts publishing. Find its id with list_community_scheduled_posts. Cancelling deletes the post and its content. To reschedule a post, read it first with get_community_scheduled_post, then cancel it and schedule it again with that content. A post with a video can only be rescheduled in the beehiiv app. You cancel as your own community member, the one that joined with your beehiiv account's email, and that member must be a moderator or above. Otherwise the call returns "Access denied": tell the user to join the community with that email or to get a moderator role.
cancel_community_scheduled_post
Invite people to a publication's community from one of three audiences - a set of subscriber segments, a list of email addresses, or recommended subscribers. Pick one with `source` and provide its matching field. Invites are created and emailed in the background.
create_community_invite
Delete a single step from an existing automation's flow. Works on live (published) automations: the deletion is applied to a staging workspace (a draft copy) and only affects the live automation once you publish. The step's children are re-parented automatically. Pass the live or staging `automation_step_id` to delete. Live IDs are mapped to their staging copy. When the response reports the automation live with unpublished changes, relay its `publish_instructions`.
delete_automation_step
Delete a trigger from an automation. Always edits a staging workspace (a draft copy); the live automation is unchanged until a human publishes from the editor. Pass the live or staging `automation_trigger_id` to delete. Live IDs are mapped to their staging copy. An automation must keep at least one trigger. The deletion is saved to staging; publish the changes from the editor.
delete_automation_trigger
Delete a content tag from a publication. The tag is removed from every post that uses it and its website tag page stops resolving. This cannot be undone.
delete_content_tag
Delete a podcast episode and its audio files. A published episode disappears from the show's RSS feed. This cannot be undone through the API.
delete_podcast_episode
Delete a podcast show and all of its episodes. The show's RSS feed stops serving. This cannot be undone through the API.
delete_podcast_show
Derive a complete BrandSpec from this publication's own brand - its web theme colors, fonts, name, and logo - via the template-builder factory. When the user wants pages composed in their existing brand, derive here first and pass the returned `brand_spec` through to `build_site_page` or `apply_site_package_draft`, adjusted or not. The derivation is deterministic and opinionated: the theme's five colors expand into the full 10-role palette with contrast-safe fallbacks (weak or missing colors are repaired), fonts map onto the editor's catalog, and three themes are generated. Palette, typography, and logo come from the publication; archetype, cards, motion, and copy land on neutral defaults - those are the user's creative choices, so adjust them conversationally before composing.
derive_brand_spec
Search the publications you could recommend, the same surface as the discover page in the app. Returns public-safe fields only. Use this to find a publication's ID before creating a recommendation. A publication that will pay you to recommend them carries an `offer`: - payout_per_lead_cents: what you earn per verified subscriber you send them, after the beehiiv cut. - eligible_countries: subscribers must be in one of these countries to be paid for. Empty means no restriction. - has_applied: you already have an open application to this offer. - auto_accepts_you: your publication already meets their auto-accept rules, so an application would go live immediately instead of waiting for review. Use type 'paid' to see only publications that pay, or 'free' for only those that do not. subscriber_count_at_least is a floor the app rounds down to, not an exact count.
discover_publications
Duplicate an existing post within its publication. Creates a new draft copy with " (N)" appended to the title, carrying over the body content, theme, audience targeting, content tags, and authors. The copy always starts as a draft - promotion/publish remains a human action via the beehiiv UI. Returns the new post in the same shape as `get_post`. To rename or change the copy, follow up with `edit_post`.
duplicate_post
Duplicate an existing post template into a new template in the same publication. The copy includes the template's content, theme, settings, and metadata, with "(N)" appended to its name. Discover template IDs with `list_post_templates`.
duplicate_post_template
Duplicate an existing product. Creates a draft copy with "(COPY)" appended to the name and a "-copy" slug, including its variant, pricing and redeemable.
duplicate_product
Edit an existing automation email's body incrementally by targeting individual blocks - cheaper and safer than resending the whole body with `save_automation_email`. Untouched blocks are left exactly as they are; only the blocks you touch are re-parsed. Read the body once with `get_automation_email_content` (format: `editor_html`), then target a block in `operations`. Top-level blocks are stamped with `data-node-hash="<hash>"`; the response returns refreshed hashes so you can chain more edits without re-reading. A nested node is a valid target too - to change one paragraph inside a `section`, target that paragraph's `data-id` rather than replacing the whole section and re-sending its siblings. Target the hash by default: it is rejected if someone else changed that block since you read it, which an id is not. An edit elsewhere leaves a block's hash intact, so you can chain. Use an id when you mean to write over whatever the block now holds. `content` is HTML matching the editor's parse rules - the same contract as `save_automation_email`. Call `learn_post_authoring` for it. Automation emails drop ad-related editor nodes such as `advertisementOpportunity` rather than authoring them. Edits land in the automation's staging (draft) workspace. When the response reports the automation live with unpublished changes, relay its `publish_instructions`. Atomic: if any target no longer resolves, nothing is applied and you are told to re-read.
edit_automation_email_content
Change an existing website page's metadata - its name, visibility, paywall, SEO/social cards, and layout toggles. This is a partial patch: only the fields you send change (e.g. send just `name` to rename, nothing else is touched). Send at least one of `name`, `page_enabled`, `premium`, `metadata`, or `customization` - identifying the page alone leaves nothing to change. To read a page without changing it, call `get_page`. Edits land on the page record directly; body content is versioned separately. For the full typed shapes (the `metadata` and `customization` objects) call `learn_page_metadata`.
edit_page
Change an existing post's metadata (title, subtitle, audience, settings, SEO, content tags). This is a partial patch - only the fields you send change (e.g. send just `title` to rename, nothing else is touched). Web metadata (title, subtitle, web and SEO settings, tags, authors) saves straight to the post, including already-published posts, so there is no publish step and nothing for a human to do in the beehiiv UI. Once a post has sent, the email subject line, email preview text, custom live URL, social share and email audience are locked and are rejected or ignored. For the full typed shapes (recipients, web/email/seo settings, content tags) call `learn_post_metadata`. To change the post's body, use `edit_post_content` (body edits on a published post land in the draft until a human clicks Update web). To create a new post, use `save_post`.
edit_post
Edit an existing post's body incrementally by targeting individual blocks - cheaper and safer than rewriting the whole body. Untouched blocks are left exactly as they are; only the blocks you touch are re-parsed. Read the body once with `get_post_content` (format: `editor_html`), then target a block in `operations`. Top-level blocks are stamped with `data-node-hash="<hash>"`; the response returns refreshed hashes so you can chain more edits without re-reading. A nested node is a valid target too - to change one paragraph inside a `section`, target that paragraph's `data-id` rather than replacing the whole section and re-sending its siblings. Target the hash by default: it is rejected if someone else changed that block since you read it, which an id is not. An edit elsewhere leaves a block's hash intact, so you can chain. Use an id when you mean to write over whatever the block now holds. Each block takes one operation per call, so a target may appear only once in `operations`. To replace a block and add content around it, put the extra blocks in that replace's `content`; for anything else, make a second call with the refreshed hash. When the body already has structure - a template scaffold, a sign-off/footer, or a placeholder section - place new content with `insertBefore`/`insertAfter` the relevant block, or `replace` the placeholder, rather than `insert position:"end"`, which lands content after the sign-off. `content` is HTML matching the editor's parse rules; call `learn_post_authoring` for the node and mark contract. Ad network opportunities and automated ad placements can be inserted - use the contract returned for `advertisementOpportunity` or `automatedAdvertisementPlacement`. Other editor-managed nodes already in the post (polls, sponsorships, and so on) round-trip fine, but adding or repointing them here needs their contract to say they are authorable. Atomic: if any target no longer resolves, nothing is applied and you are told to re-read. Edits land in the draft only - a human publishes in the beehiiv UI.
edit_post_content
Update a post template's metadata. This is a partial patch - only fields you send are changed. To replace the template's body content, use `edit_post_template_content`. To create a new template, use `save_post_template`. Templates migrated from publication settings or created during onboarding are read-only.
edit_post_template
Edit a post template's body incrementally by targeting individual blocks, or replace the entire body with `html_content`. For incremental edits, read the template once with `get_post_template_content` (each top-level block carries a `data-node-hash`), then target blocks in `operations`. Only the blocks you touch are re-parsed; untouched blocks survive byte-identical. Use `insertBefore`/`insertAfter` to place new content: `insertBefore` a block hash finds that block's position and prepends content before it. For full replacement, provide `html_content` - it replaces the entire body. Omit `operations` for full replace. `operations` and `html_content` are mutually exclusive; providing both raises an error. For supported HTML syntax and per-node parseHTML rules, call `learn_post_authoring`. Templates migrated from publication settings or created during onboarding are read-only. To update template metadata (name, subject line, etc.), use `edit_post_template` instead. For theme-level styling, use `save_post_template_theme`.
edit_post_template_content
Generate an AI image from a text prompt and save it to a publication's media library. Fire-and-forget: this enqueues a background job and returns immediately with a `generation_id` and status "pending". Kick it off, then continue with other independent work (other pages, content, assets), and call `get_image_generation_status` once you actually need the result. The finished asset's `id` serves as a post's `thumbnail_id`, and its `url` embeds in HTML content via `save_post` or `edit_post_content`. Generation uses Google Gemini, or OpenAI with model_preset "openai", and counts toward the workspace's AI credit quota, reported in the completed status response's `ai_usage` field.
generate_image
The full performance and payment report for one ad placement: earnings and payout status, payout model and rate, recipients and delivery rate, unique opens and open rate, payable clicks and click-to-open rate, and the send window. Get the report id from list_ad_reports.
get_ad_report
Get a single asset from the media library with full details including usage information
get_asset
Get an author's details by author ID
get_author
Get an automation's full configuration including triggers, step flow, email metadata, and branch paths. Use workspace parameter to inspect live (published) or staging (draft) flow.
get_automation
Get the rendered content of an automation step's email. 'editor_html' returns canonical HTML compatible with save_automation_email and, for small changes, edit_automation_email_content - each top-level block is stamped with data-node-hash for targeted patching. A 'staging' read falls back to 'live' when the step has no unpublished draft yet; the response 'workspace' field reports which was read. Call `get_automation_schema` for the full email workflow.
get_automation_email_content
Get detailed information about a single automation journey, including all journey steps, branch decisions, and per-subscriber email engagement metrics (open rate, click rate).
get_automation_journey
Get the Automation reference: trigger event main_conditions shapes, step type params, branch paths, resources, and email authoring workflow.
get_automation_schema
Get performance metrics for an automation. Returns overall stats, per-email breakdown, and optionally per-step subscriber counts with branch decisions. Rates are percentages.
get_automation_stats
Compare an automation's staging workspace against its live (published) version. Returns a summary of what changed: added, removed, or modified steps and triggers. Use before publishing to review pending changes.
get_automation_workspace_diff
Get a publication's community: branding, sync toggles, tier gating, Luma calendar, and PWA. Returns `exists: false` when the publication has not created a community yet.
get_community
Get a community channel with its display position, default flag, and access gating: `gated` is true when members need a premium tier or a matching custom field value, and `tiers` lists the premium tiers required.
get_community_channel
Get a community member's profile, roles, and banned/removed status.
get_community_member
Get a publication's community overview metrics for a period: new members, posts created, comments and replies, and member participation, each with the period total and the previous period's total for comparison. Pass `breakdown` to drill into a ranked list instead of the overview: new_members (recent joiners), popular_channels, popular_members, or top_posts. For popular_channels/popular_members set `by` to rank by "posts" (default) or "comments".
get_community_metrics
Get a community post with its threaded comments and a summary of any attached content (embedded Post, Poll, Survey, or Podcast presented as type + id). Comments are paginated.
get_community_post
Get a scheduled community post with its full body as HTML, in the form schedule_community_post takes. Read a post before cancelling it to schedule it again, so its content carries over. A video in the post does not carry over: a post with a video can only be rescheduled in the beehiiv app. You read as your own community member, the one that joined with your beehiiv account's email, and that member must be a moderator or above. Otherwise the call returns "Access denied": tell the user to join the community with that email or to get a moderator role.
get_community_scheduled_post
Retrieve detailed information about a condition set, including its full definition
get_condition_set
Get the condition set schema: available condition types, attributes, operators, and structure.
get_condition_set_schema
Get the content gate settings for a page on a publication's website. Content gates hide content below the gate based on the visitor's subscription status. Reports the gate's type (inline or popup) and its audience settings. Identify the page with page_id, slug, or page_type; call list_pages to see them.
get_content_gate
Get AI crawler and bot analytics for a publication's website — total, served, and blocked requests, AI-crawler share, per-crawler breakdown, top crawled pages, and response status codes.
get_crawler_analytics
Get identity and access context for the authenticated user
get_current_user
Get a publication's revenue broken down by feature - ad network, boosts, paid subscriptions, and digital products - plus the combined total, over a time period or an exact date range.
get_earnings
Get email engagement metrics (opens, clicks) for a publication over time, broken down by period.
get_engagements
Get a single group subscription: its tier, purchaser, seat counts, per-seat price, list price, the tier's current group discount (it can differ from the discount at purchase), billing dates and the custom deal it came from, if any. Use list_group_subscription_seats for its members.
get_group_subscription
Check the status of an AI image generation started by `generate_image`: "pending", "processing", "completed" (the response then carries full asset details) or "failed" (with an error message). Finished responses also carry an `ai_usage` object reporting AI credit consumption. Generation typically takes 15-45 seconds, so do other independent work after kicking it off and check back once, rather than polling in a loop. When you do need to wait, leave about 10 seconds between checks.
get_image_generation_status
Get the opt-in confirmation email for a publication. Returns the subject line, preview text, and content as editor HTML. Call save_opt_in_email to make changes. Pass format: 'html' for the full themed email render instead.
get_opt_in_email
Get an order's full details, including the buyer (subscription id, email, status), line items, refund status, and fulfillment status.
get_order
beehiiv ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve beehiiv's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are beehiiv alternatives on ChatGPT?
As of 2026-11-02, beehiiv competes with ActiveCampaign, Aivie, Attentive, AWeber, Banger, Bizgo, Brevo, Conversion and 45 more in ChatGPT Email & SMS Lifecycle Marketing Automation, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.