MCP App Store
by KeenEthics
OptinMonster icon

OptinMonster

By OptinMonster

Get New App Alerts

Overview

Create and manage OptinMonster lead generation campaigns in ChatGPT. Built for marketers, business owners, and ecommerce teams, OptinMonster helps you capture leads, grow your email marketing list, and track website conversions. - Create popups, a floating bar, a fullscreen welcome screen, slide-ins, or inline signup forms by describing the campaign you want. - Start from a template or customize your campaign's copy, images, colors, and layout. - Set display rules to control when and where campaigns appear. - Assign campaigns to your connected websites, and pause or resume them. - Review impressions, conversions, and conversion rates to understand campaign performance. - Compare results across campaigns and identify top performers. - Check which email marketing integrations receive your leads. OptinMonster works on any type of website, including WordPress sites, Shopify and WooCommerce stores, and custom-built websites. Requires a connected OptinMonster account and OptinMonster installed on your website to display campaigns. Available features depend on your account's plan and permissions.

Tools

archive_campaign

ChatGPT
Archive a campaign: hides it from the active campaign list while keeping its analytics and the campaign itself intact. Not a deletion. Requires a plan with campaign archives.

assign_campaign_to_site

ChatGPT
Assign a campaign to a site so it can display there. A campaign with no site assignment never shows anywhere. Idempotent. Site ids come from list_sites; remove_campaign_from_site reverses it.

connect_campaign_integration

ChatGPT
Send this campaign's leads to an account integration's list. Ids come from list_integrations and list_integration_lists. Then map custom form fields with set_campaign_field_mapping. A campaign builder tab opened before this call overwrites it on its next save; reload the builder first.

copy_view

ChatGPT
Copy a view from one campaign into another on the same account, like the builder's Import View: its rows, columns and elements with fresh ids, keeping their own styles and the view's background. It is added as the target's last view, saved and re-rendered. A button or form that leads to a view the target lacks is set to close the campaign and listed in retargeted. Restyle it afterwards with edit_campaign.

create_campaign

ChatGPT
Create a campaign from a compact description: campaign type, theme tokens, and views made of rows, columns and elements (text, button, image, optin, spacer, divider, countdown, badge, callout, progress, wheel, social, yesno, video, html). A plain text element (not a badge, pill or other variant), here and in setContent, takes bold, em, label and [phrase]{color=#rrggbb size=20} to colour or size part of it. A wheel needs an optin in its view; its goTo view shows the prize with {{coupon_label}} and {{coupon_code}}. A social element links follow buttons to profile URLs; it needs the account feature social-media-element. A yesno asks one question: Yes shows its goTo view, No closes; it needs the account feature yesno-buttons. A button's call dials that number on a phone and counts the tap as a conversion. A video embeds a YouTube or Vimeo link that plays when tapped, never on its own. On fullscreen, a view's backdrop puts a full-bleed image under a tint, layout.width full spans the screen, and welcomeMat makes it a welcome mat that pushes the site down. On inline, contentLock blurs everything after the embed until the visitor converts; it needs the account feature content-locking. html is a fallback for what native elements cannot express (e.g. a comparison table): static markup only — text, lists, tables; no scripts, embeds, forms or handlers — https or mailto links and https images, CSS inline or in a <style> scoped to html div#om-{{id}}, 8 KB and at most 3 per view, and a reason saying why native is not enough; the stored HTML is re-serialized, so read it back with get_campaign (include: design) rather than assume byte-identical markup. Start from list_recipes and get_recipe when a recipe fits. Omit views for a sensible default. The first view is the entry view named "optin"; a button or optin goTo names another view. The campaign is created paused with the design written and rendered; assign it to a site (siteIds here or assign_campaign_to_site) and resume it to go live. Read the campaign-ir-examples resource for worked examples.

create_campaign_from_template

ChatGPT
Create a campaign from a catalogue template slug (from list_templates / get_template), then apply an optional batch of edit operations. The app copies the template's ready-made design server-side, so this needs no IR compile and is far cheaper than create_campaign for the common "instantiate a known design, then tweak it" case. Pass the template's type from get_template; a different type is refused before anything is created. ops are the same typed operations as edit_campaign, addressed by the ids from the returned outline; omit them to instantiate the template unchanged. The campaign is created paused with the design written and rendered; assign it to a site (siteIds here or assign_campaign_to_site) and resume it to go live.

create_image_upload

ChatGPT
Mint a one-time URL for uploading a local image file to the account's media library. Use this instead of upload_image's base64 for any file on disk: the bytes never pass through the conversation. Then run: curl -sf -A "optinmonster-mcp" -F "image=@/absolute/path/to/file.png" "<uploadUrl>" — it prints the uploaded image record. The URL is single-use and expires in five minutes; if curl fails, mint a new one rather than retrying it. It is a credential for exactly one upload and will appear in shell history. JPEG, PNG, GIF, SVG or WebP, up to 5 MB; the file must really be the declared mimeType.

create_site

ChatGPT
Register a website on the account so campaigns can be assigned to it (see assign_campaign_to_site). Needs a name and the domain, with or without https://. A new site stays unverified until the OptinMonster embed code is found on it. Its install field has the embed code for this account and how to add it (WordPress, Shopify or any other site): show it to the user, then run verify_site once it is on the site. Fails when the plan has no site slots left.

delete_campaign

ChatGPT
Permanently delete a campaign and its screenshots. This cannot be undone. For a reversible removal use trash_campaign; to hide it while keeping analytics use archive_campaign.

delete_site

ChatGPT
Permanently delete a site. Campaigns assigned to it stop displaying there. Irreversible: there is no trash for sites, so confirm with the user first.

disconnect_campaign_integration

ChatGPT
Stop sending this campaign's leads to an integration. Its list choice and field mapping are deleted with it.

duplicate_campaign

ChatGPT
Create a copy of a campaign within this account under a new name. The copy starts paused with the same design, rules, settings, folders, integrations and site assignments, so resuming it shows it on the same sites as the original. Returns the new campaign id.

edit_campaign

ChatGPT
Edit a campaign's content, layout or style with typed operations addressed by the ids from get_campaign_outline: setContent, setElementStyle, setButton, setImage, setOptin, addField, updateField, removeField, moveField (custom form fields addressed by name; updateField rename also moves the field's integration mapping), setCallout, setYesNo (Yes/No button labels), setVideo (a video's YouTube or Vimeo url, or its ratio), setHtml, addElement, removeElement, moveElement, addRow, removeRow, setRowWidths, setRowGap, setRowAlign, addView, removeView, setTheme, setBackground (a view, row or column: color, or a two-colour gradient). setContent keeps a template text's styling (its first run's); in a bullet list each line becomes an item. setHtml {elementId, html, reason} replaces a Custom HTML element (same rules as create_campaign's html); on builder-made HTML it removes any scripts or embeds and says so in notes. The stored HTML is re-serialized, so read it back with get_campaign (include: design) rather than assume byte-identical markup. All operations apply together or not at all. position moves a floating bar to the top or bottom. The design is saved and re-rendered; pass render false to batch several edits and re-render once with an empty ops list. Pass expectUpdatedAt from the outline to refuse writing over a change made elsewhere.

explain_campaign_rules

ChatGPT
When and where a campaign displays: its display rulesets normalized into a tree (rulesets → groups → rules) with ids for editing and a plain-language rendering. Read-only.

get_account

ChatGPT
Get the authenticated OptinMonster account: its identity, plan, features and limits. Read-only.

get_campaign

ChatGPT
Get one campaign: name, type, status, notes, assigned sites, its views, and its custom CSS (the builder's Desktop, Tablet and Mobile tabs). The full design tree (rendered HTML, styles and element rows per view) is large and only returned when include contains "design"; the raw display rulesets only when it contains "rulesets" (prefer explain_campaign_rules). Read-only.

get_campaign_analytics

ChatGPT
Impressions, conversions and conversion rate for one campaign, per variation when it is a split test. Each variation also has revenue: the attributed total, view-through plus click-through, in the account's revenue attribution currency (returned as currency); it is null when revenue attribution is off. Defaults to the last 30 days; pass start and end (YYYY-MM-DD) for a custom range. Read-only.

get_campaign_integrations

ChatGPT
Where a campaign's leads are sent: each connected integration with the list and options configured for this campaign. Read-only.

get_campaign_outline

ChatGPT
A compact outline of a campaign: every view, row, column and element with its id, type and text, in about 200 tokens, plus a text rendering. Use the ids with edit_campaign. includeStyles adds current colour, size and spacing values per element. Read-only.

get_campaign_screenshots

ChatGPT
Get the campaign's rendered screenshot image URLs, one per view, as last generated by the builder. Use it to show what a campaign looks like. Read-only; it does not re-render.

get_dashboard_analytics

ChatGPT
The account dashboard Conversions view: conversion rate, conversions and impressions across all campaigns, with the same figures for the preceding period and a chart-ready series over the range. Defaults to the past 12 months, as the dashboard does; pass start and end (YYYY-MM-DD) for a custom range and siteId (from list_sites) to filter to one site. For team members without the owner or admin role, omitting siteId shows the first site they may access, not the whole account. Renders as an interactive widget in hosts that support MCP Apps. Read-only.

get_lead_stats

ChatGPT
Aggregate lead counts: leads collected in a date range (default: today, UTC) versus the prior period of the same length, a per-day breakdown, and the all-time total. Dates are UTC calendar days, as lead timestamps are. No personal data. Read-only.

get_pageview_usage

ChatGPT
Pageview (impression) usage for the current calendar month against the plan's allowance, with a per-day breakdown. Read-only.

get_recipe

ChatGPT
One recipe in full: its IR (layout, copy placeholders, radius and spacing) and any further layouts' IRs, image slots (rendered size, minimum source size and what the image should show), styles with their colours, fonts and image assets, notes and suggested rules. An image src "style:<name>" is the chosen style's asset; keep it, or replace it with an https URL. Edit the IR's copy, images and structure as the brief needs, then pass it to create_campaign with recipe, style and layout. Read-only.

get_rule_schema

ChatGPT
The display-rule vocabulary: every rule type with its allowed operators, value type and units; every operator with its meaning; the actions a ruleset can take. Read this before set_campaign_rules. Pass platform to add e-commerce rules. The paged items are the core rule types; operators, actions, combination and platformRules are unpaged reference. Read-only.

get_site

ChatGPT
Get one site by its id, including its integration and platform settings. Read-only.

get_template

ChatGPT
Get one template with its marketing description and headline. Read-only.

list_campaigns

ChatGPT
List campaigns with their status and month-to-date performance. Optional text search, status and type filters, and sort. Active and paused campaigns by default; use view to see archived or trashed ones. Read-only.

list_images

ChatGPT
The account's uploaded images (name, URL, size, dimensions), in no particular order, with optional name search. Read-only.

list_integration_fields

ChatGPT
The provider's own contact fields (e.g. Mailchimp merge tags) a form field can be mapped to with set_campaign_field_mapping. Pass the campaign's listId: fields are often per list. Read-only.

list_integration_lists

ChatGPT
The lists (and clients, for agency providers) an account integration can send leads to. Use an id as listId in connect_campaign_integration. Read-only.

list_integrations

ChatGPT
List the email marketing and CRM integrations connected to the account (provider, label). Credentials are never returned. Read-only.

list_recipes

ChatGPT
Curated campaign designs to start from. Filter by campaign type, mechanic (what the visitor does) and job (why the campaign exists). Each result has its styles as id and mood only, and its layouts as id and title; pick one of each, then call get_recipe for the IR and pass recipe, style and layout to create_campaign. Read-only.

list_sites

ChatGPT
List the websites registered on the account. A campaign only displays on sites it is assigned to (see assign_campaign_to_site); create_site registers a new one. Read-only.

list_templates

ChatGPT
Browse the campaign template catalogue with optional search (matches name, id and keywords), campaign type and device filters. Read-only.

list_top_campaigns

ChatGPT
The best-performing campaigns over a date range, ranked by conversions. Use this instead of fetching analytics campaign by campaign. Read-only.

pause_campaign

ChatGPT
Pause a live campaign so it stops displaying. Its data and settings are kept; resume_campaign turns it back on.

remove_campaign_from_site

ChatGPT
Take a campaign off one site; its other sites keep it. Removing its last site means it shows nowhere until assigned again. Idempotent: a site it is not on is left as it is. Site ids come from list_sites or get_campaign.

resume_campaign

ChatGPT
Resume a paused campaign so it displays again on its assigned sites.

search_unsplash

ChatGPT
Search Unsplash stock photos for use in campaigns. Returns image URLs and attribution. Read-only.

set_campaign_css

ChatGPT
Replace a campaign's custom CSS, the builder's Settings > Custom CSS. css applies on every device; tabletCss and mobileCss only on those devices. Each tab given replaces that tab whole ("" clears it); tabs left out are unchanged. Start every selector with "html div#om-{{id}}" ({{id}} is filled in with the campaign id): unscoped selectors, nested rules, "<", @import and script URLs are refused; @font-face is allowed. Generated class names carry a random per-campaign prefix, so CSS written against them breaks when copied to another campaign. Stable hooks: an element's wrapper id ends in "--wrapper--<elementId>" (select it with [id$="--wrapper--<elementId>"]), and the unprefixed classes om-row, om-column, om-element and Element__content. The CSS edit_campaign writes for its own designs is kept. Read the current CSS with get_campaign. Saved and re-rendered.

set_campaign_field_mapping

ChatGPT
Map custom form fields (by name, from get_campaign_outline; verbose: true adds formFields with each field's type) to the provider's fields (ids from list_integration_fields), so their values reach the provider. Merges with the existing mapping; null removes one. Email, name and phone are sent automatically and are not mapped. A campaign builder tab opened before this call overwrites it on its next save; reload the builder first.

set_campaign_rules

ChatGPT
Replace a campaign's display rules with the given rulesets. This is a full replacement: any ruleset, group or rule not listed is removed, and their ids are returned under removed so a drop is never silent. Reuse ids from explain_campaign_rules to keep nodes; omit ids for new ones. Validate types and operators with get_rule_schema first. KeyValue rule types (cookie, query-arg, js-variable, local-storage, session-storage, has-visited, has-not-visited) take value { key: { operator, value }, value: { operator, value } } and no top-level operator. Returns the stored rules explained.

trash_campaign

ChatGPT
Move a campaign to the trash. Reversible: untrash_campaign recovers it. Use delete_campaign only for permanent removal.

untrash_campaign

ChatGPT
Recover a campaign from the trash. It comes back paused, not live.

update_campaign

ChatGPT
Rename a campaign or change its notes. Only the fields given change; the design, rules, status and sites are untouched. An empty notes string clears them. For the design use edit_campaign.

update_campaign_integration

ChatGPT
Change the list or client a connected integration sends this campaign's leads to.

update_site

ChatGPT
Rename a site or change its domain. Only name and domain can be changed here; integration and platform settings cannot. A domain change un-verifies the site and resets its reCAPTCHA, analytics, platform and custom-domain settings to defaults, reported as domainChanged; run verify_site afterwards, and confirm with the user before changing a domain.

upload_image

ChatGPT
Upload an image to the account's media library from a public https URL, optionally tagged to a campaign. JPEG, PNG, GIF, SVG or WebP, up to 5 MB. For a file on disk use create_image_upload instead. base64 is accepted only for tiny inline images and is capped at 256 KB; it costs far more context than either alternative.

verify_site

ChatGPT
Check whether the OptinMonster embed code is installed on a site; verified is true when it is found. verified false means not found yet, not "not installed": the check gives the site only 10 seconds to load, so a slow site with the code can still come back false. Say so and offer to check again; while false, install says how to add the code. A site whose code loaded in the last 12 hours reports true without a fresh check, and subdomain is not looked at then. This only checks: the app marks the site verified on its own the next time the code loads there. For a wildcard site (*.example.com), pass subdomain to check one of its subdomains (for example "shop"). Safe to repeat.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps