# Documentation > Learn how to research opportunities, create articles, run campaigns, improve content, and publish with Kitful. Kitful brings content research, writing, publishing, and improvement into one workspace for each website. ## Start here - [Get started with Kitful](/docs/getting-started) to add a site, review its settings, and create your first article. - [Understand credits and usage](/docs/credits-and-usage) before starting a larger batch or campaign. - [Connect a publishing destination](/docs/integrations) when you are ready to publish. ## The Kitful workflow ### Research Use [Research](/docs/research) to explore focused opportunities or build a sequenced topic map. Review the evidence, then send a useful idea to Create or a campaign. ### Create Create a blank draft, start from a keyword, turn a YouTube video into an article, or choose a specialized format such as a comparison, listicle, guide, or how-to. ### Campaigns Use [Campaigns](/docs/campaigns) to manage a topic backlog, publishing cadence, credit budget, and destination. Choose Manual when you want to control the backlog, or Autopilot when Kitful should keep it filled. ### Optimize Connect Google Search Console and use [Optimize](/docs/optimize) to prioritize pages that are losing traffic, close to stronger rankings, or earning impressions without enough clicks. ### Publish Connect [Framer](/docs/integrations/framer), [Shopify](/docs/integrations/shopify), [WordPress](/docs/integrations/wordpress), [Ghost](/docs/integrations/ghost), or a [Webhook](/docs/integrations/webhooks). Publish immediately, schedule a draft, or let a campaign publish on its cadence. ## Settings stay with each site Each site keeps its own articles, research, campaigns, connections, brand profile, content defaults, internal links, and Search Console data. Read [Sites and workspaces](/docs/sites-and-workspaces) before adding another domain or client. > New to Kitful?: > > Start with one article and review it before activating a campaign. This makes it easier to tune your site settings and publishing connection. --- # Getting started > Add your first site, review its settings, create an article, and connect a publishing destination. Kitful organizes work around sites. Each site has its own content, settings, research, campaigns, and publishing connections. Interactive walkthrough: From domain to published article. The whole setup at a glance: add your site, review the brand profile, generate an article, and publish it. ## Complete account setup Sign in and complete the short account setup. If Kitful asks you to choose a plan, finish that step before continuing to your site. ## Add your website Enter the domain you want to work on. Kitful creates a site workspace and starts learning the public information it can use to prepare your brand profile. You can continue while setup runs. When it finishes, review the result before relying on it for articles. ## Review Brand & voice Open **Settings > Brand & voice** and check: - company name and target audience - products and services - tone and writing instructions - words to avoid and preferred replacements - how strongly articles should mention your brand You can edit these fields directly. You can also train the voice from text, a public article URL, or a supported file. ## Choose your first workflow - **Research** finds grounded article opportunities or builds a topic map. - **Create** generates one article or opens a blank draft. - **Campaigns** creates a recurring content workflow. - **Optimize** acts on Google Search Console performance for an existing site. For a first test, [create one article](/docs/create-articles) and review it before starting a campaign. ## Connect a publishing destination Open **Integrations** and connect where Kitful should publish. You can keep articles as drafts if you are not ready to connect a destination. ## Publish now or schedule it When an article is ready, publish it from the editor or article list, schedule it from **Articles > Scheduled**, or let an active campaign publish to its selected connection. Read [Publish and schedule](/docs/publish-and-schedule) for the full workflow. ## Recommended next steps 1. Read [Credits and usage](/docs/credits-and-usage). 2. Review [Brand and voice](/docs/site-settings/brand-and-voice). 3. Configure [media and internal links](/docs/site-settings/media-and-internal-links). 4. [Connect Search Console in Optimize](/docs/optimize#connect-search-console) when you want to improve existing pages. --- # Sites and workspaces > Understand how Kitful separates content, settings, members, and publishing connections for each website. Every site you add gets its own workspace in Kitful. This keeps one website's content and settings from affecting another. ## What belongs to a site Each site keeps its own: - website domain and display name - articles and generation history - Research results and Campaigns - publishing integrations - Brand & voice, article, and media settings - internal-link index - Google Search Console connection and Optimize data - members and access ## When to add another site Add a new site for a different domain, brand, business, or client. If the work belongs to the same website, keep it in the existing site. ## Add a site 1. Open the site switcher in the dashboard. 2. Choose **Add site**. 3. Enter the website domain. 4. Review the site setup when it is ready. If you already have another workspace, the website page includes a **Skip** action that returns you to your current workspace. A first workspace still requires a website. ## Change a site's domain Only change the domain when the same business has moved to a new address. Open **Settings > General**, update **Website domain**, and confirm the re-analysis. Existing articles and campaign history stay with the site, but domain-specific information must be prepared again. Brand & voice shows the analysis state while the updated profile is being built. You must also reconnect Search Console for the new domain. > Use Add site for a different business: > > Changing the domain preserves the existing workspace. Add another site when its content, settings, members, or publishing connections should remain separate. ## Delete a site Open **Settings > General** and use **Delete site** in the danger zone. Deleting a site permanently removes its Kitful articles, research, campaigns, settings, and connections. It does not delete the website or remove posts that were already published to another platform. --- # Credits and usage > Understand the Kitful plan, monthly credits, top-ups, action costs, and common generation limits. Credits are used when Kitful generates, researches, analyzes, or rewrites something for you. Saving settings, editing manually, organizing a campaign backlog, and publishing an existing article do not use credits. ## Current plan The Kitful plan costs **$79 per month** and includes **500 monthly credits**, multiple site workspaces, up to 10 generation jobs at once, and the complete Research, Create, Campaigns, Optimize, settings, and integration workflow. Monthly credits renew with the subscription. Purchased top-up credits are stored separately and do not expire. ## Credit costs | Action | Credits | | -------------------------------- | ------: | | Generate a base article | 20 | | Rewrite an article | 20 | | Generate or edit an image | 2 | | AI edit | 1 | | Research Explore | 10 | | Research Map | 20 | | Optimize page diagnosis | 3 | | Optimize article opportunities | 5 | | Suggest campaign topics manually | 5 | | Train your writing voice | 5 | | Re-analyze a website | 2 | Autopilot topic refill does not add a separate research charge. Each campaign article still uses the normal article and optional image credits. ## Article image costs A base article costs 20 credits. Generated images cost 2 credits each. For example, an article with one featured image can cost up to 22 credits. Adding in-article images raises the maximum shown in the Create estimate. ## Top-up credits Top-ups cost **$0.10 per credit** and start at **250 credits**. Kitful uses monthly credits before purchased top-up credits. ## Free access Eligible work-email signups can receive 20 introductory credits for one base article. Free accounts support one site and one generation job at a time. Publishing integrations and Campaigns require an active paid plan. ## When work cannot start A generation can pause or fail to start when your balance is too low, too many jobs are already running, a campaign reaches its lifetime budget, or the required paid plan is inactive. The relevant screen shows what needs attention. ## Avoid unexpected usage - Check the estimate before generating an article. - Start with one article before launching a campaign. - Add a lifetime campaign budget when you want a hard cap. - Use Manual refill when you want to review the backlog. - Generate images only when they add value. --- # Research content opportunities > Use Explore or Map to find grounded ideas, review evidence, and move opportunities into articles or campaigns. Research helps you decide what to write before spending credits on full articles. ## Choose a research mode ### Explore Use **Explore** for a focused market, audience problem, workflow, or buying decision. It returns a shortlist of distinct opportunities grouped by theme and costs 10 credits per run. ### Map Use **Map** for a broader niche or content territory. It returns a sequenced plan with pillars, supporting topics, and a recommended starting point. A Map run costs 20 credits. ## Run research 1. Open **Research**. 2. Choose **Explore** or **Map**. 3. Enter the topic or territory. 4. Start the research. 5. Review the ideas and their sources. When website context is available, Kitful considers what the site already covers. Relevant opportunities can also show real impressions after Search Console is connected. Interactive walkthrough: Move a researched idea into Create. See how a focused Explore result carries its angle and evidence into a new article. Interactive walkthrough: Build a topic map. See how Map turns a broad territory into quick wins and a sequenced pillar plan. ## Use the results For an available idea, click **Write article**, select ideas and add them to a campaign, or create a new campaign from the selection. Ideas already planned in a campaign are marked to reduce accidental duplicates. ## Open saved research Recent Explore runs and topic maps stay available on their matching tabs. Opening a saved result does not use more credits. Use the fresh-research action only when you want Kitful to search again. ## Get stronger results - Use a concrete problem or buying decision in Explore. - Use a broad but recognizable territory in Map. - Review Brand & voice before researching. - Connect Search Console for site-specific demand signals. - Move only the strongest ideas into a campaign. --- # Create articles > Start a blank draft or generate an article, then review its estimate, status, settings, and editor tools. Use **Create** when you want one article now. Start from a keyword, choose a specialized format, or open a blank draft. ## Choose a starting point - **Article** creates a keyword-led article. - **Write from scratch** opens a blank draft. - **YouTube** turns a public video into an article. - **Comparison**, **Listicle**, **Guide**, and **How-to** use a specialized structure. - **Campaign** starts an ongoing workflow instead of one article. Research and Optimize can also send a grounded opportunity into Create with useful context attached. ## Generate an article 1. Open **Create**. 2. Enter a target keyword or choose **Article**. 3. Add optional context or a specific title. 4. Review the estimate and **Override settings**. 5. Click **Generate article**. Interactive walkthrough: Create your first article. Enter a focused keyword, review the settings and credit estimate, then start generation. ## Review the estimate The estimate shows a time range, the 20-credit base cost, the maximum cost with selected image settings, and your current balance. Images cost 2 credits each. Read [Credits and usage](/docs/credits-and-usage) for the full cost table. ## Track generation After generation starts, Kitful opens **Articles > Queued**. The card shows whether the article is waiting, running, complete, or needs attention. Use the shown retry action after a recoverable failure. Once ready, the article appears under **Completed**. ## Edit and review Open the article to update its title, body, slug, metadata, excerpt, publish date, or featured image. Changes save while you work. Use **Preview** before publishing. **Rewrite** creates a new version without replacing the current article and costs 20 credits. ## Download a copy Open the article actions and choose **Download HTML** or **Download Markdown**. The download includes the featured image when one is available. ## Understand the Articles tabs - **Completed** is your article library, including drafts, scheduled articles, and published articles. - **Queued** shows waiting, running, failed, and retryable generation jobs. - **Scheduled** shows upcoming and completed publishing slots. --- # Run a campaign > Create a recurring campaign with a topic backlog, cadence, budget, review policy, and publishing destination. Campaigns keep one topic area moving from ideas to finished articles. You choose the direction, pace, backlog policy, budget, and destination. Campaigns require an active paid plan. ## Create a campaign Open **Campaigns** and click **New campaign**, or start from selected Research ideas or an Optimize recommendation. Set the campaign name, niche or seed topic, optional context, language, articles per day, backlog policy, optional lifetime budget, and publishing destination. The campaign begins as a draft for review. Interactive walkthrough: Set up a campaign. Build a small backlog, choose a cadence and budget, then decide where completed articles should go. ## Choose a backlog policy ### Manual You control the backlog. Add topics directly, request suggestions, generate a topic map, or send ideas from Research and Optimize. Suggested topics wait for your approval. ### Autopilot Kitful keeps the backlog filled for the campaign's niche. Activate an empty Autopilot campaign to find its first topics. Topic refill has no separate research charge, but each article and optional image uses its normal credits. ## Manage Topics and History Use the **Topics** tab to add, approve, reorder, dismiss, or restore upcoming topics. A consumed topic leaves the active backlog. Use the **History** tab to see articles that are being written, completed, failed, deleted, or linked to a generated article. This keeps upcoming work separate from completed work. ## Configure publishing Choose a connected integration during setup or later from **Settings**. With a destination selected, completed articles publish on the campaign cadence. Without one, completed articles stay in Kitful for review. ## Set a lifetime credit budget Enable **Lifetime credit budget** when the campaign should pause after reaching a fixed total spend. You can raise or remove the cap later, then resume the campaign. ## Review article settings Campaign settings begin with the site's article defaults. You can change language, length, point of view, brand mentions, structure, media, cadence, backlog policy, destination, and budget for future campaign articles. ## Activate, pause, and resume Click **Activate** after reviewing the backlog and settings. Use **Pause** to stop new work without deleting the campaign. Use **Resume** after resolving a low balance, budget cap, subscription issue, or manual pause. ## Archive or delete A draft campaign can be deleted with its topics. A campaign that has run can be archived while its articles and history remain available. Restore archived campaigns from the **Archived** tab. --- # Optimize existing content > Use Search Console performance to prioritize pages and turn opportunities into improvements or new articles. Optimize uses your site's Google Search Console performance to show which pages are worth improving and which topics are worth expanding. ## Before you begin Save the correct website domain in **Settings > General** and verify that site in Google Search Console. Sign in with a Google account that can access the verified property. The property also needs enough performance data for useful page and query signals. ## Connect Search Console 1. Open **Optimize**. 2. Click **Connect Google Search Console**. 3. Sign in with an account that can access the site's property. 4. Approve read-only Search Console access. Kitful matches the site's saved domain to an accessible property. If it cannot find a verified match, verify the property in Search Console and click **Re-check**. ## Wait for the first sync The connected view shows the site and begins bringing in available performance data. If no rows appear yet, the property may not have enough data for the selected range. Use **Resync** to request the latest available data. Search Console can report data after a delay, so a successful sync does not guarantee that today's activity is available immediately. ## Understand opportunities Optimize can surface pages that are close to stronger rankings, losing clicks, earning impressions without enough clicks, or slipping out of page-one visibility. Use the available views to review opportunities, refreshable pages, completed work, all pages, and ignored pages. Search, filter, or exclude pages that should not be considered. Interactive walkthrough: Turn Search Console demand into fixes. See how a connected property becomes a prioritized queue of pages to improve, with measured results. ## Open a page Select a page to review its clicks, impressions, average position, click-through rate, and the reason it was prioritized. ### Expand the topic Generate related article opportunities grounded in queries already bringing the page impressions. Write an article immediately or add an idea to a campaign. This costs 5 credits. ### Improve the page Generate practical changes for the current page, such as a stronger title, improved description, new section, or FAQ addition. A diagnosis costs 3 credits. Review each suggestion before applying it to your website. ## Measure completed work Mark applied work as complete so it appears separately. When enough later Search Console data is available, the completed view can compare performance before and after the change. ## Refresh, reconnect, or disconnect Use **Resync** when you want the latest available Search Console data. Changing the domain in General settings stops the old property from matching the site. After verifying the new domain in Search Console, return to Optimize and click **Re-check**, or disconnect and connect with the appropriate Google account. Use **Disconnect** to stop using Search Console for this site. Existing Kitful articles, campaigns, and site settings are not deleted. --- # Publish and schedule > Publish an article immediately, schedule a draft, or let a campaign publish on its cadence. Kitful can publish an article immediately or schedule it for later. Campaigns can also publish completed articles to their selected destination. ## Before you begin Open **Integrations** and connect at least one [publishing destination](/docs/integrations). Confirm that the connection is enabled. Framer must also be ready to publish. ## Publish immediately 1. Open the article or find it under **Articles > Completed**. 2. Click **Publish**. 3. Choose the destination. 4. Confirm the publish. Kitful records the destination after a successful publish. You can publish the same saved article to another connected destination. ## Schedule an article 1. Open **Articles > Scheduled**. 2. Choose an available time or click **Schedule for a later date**. 3. Select the draft article. 4. Choose **Publish to**. 5. Click **Schedule**. The time must be at least 30 minutes in the future. A slot can show **Scheduled**, **Published**, or **Failed**. You can remove a pending slot if plans change. ## Publish from a campaign When a campaign has a destination, completed articles publish on its cadence. Without a destination, generated articles remain in Kitful for review. Campaign history appears inside the campaign and does not create manual slots under **Articles > Scheduled**. ## Troubleshoot publishing ### The destination is missing Confirm the integration is enabled and reconnect it if its credentials or permissions changed. For Framer, finish the Server API key step first. ### A scheduled article failed Open the slot, confirm the article still exists as a draft, and test the integration. After fixing the connection, create a new schedule. ### The published article looks different Review the destination's theme, template, category, author, and post-status settings. Some presentation choices belong to the connected platform. --- # Brand and voice > Review the site profile, set writing preferences, and train Kitful from examples of your published writing. Brand & voice controls who articles represent and how they sound. These settings belong to one site and act as defaults for future content. ## Review the Brand tab Open **Settings > Brand & voice > Brand** and review: - brand mention strength - website - company name - target audience - what the business does - products and services Edit anything that is incomplete or inaccurate. Changes save automatically. ## Set the Voice tab Use **Voice** to configure tone, writing instructions, words and phrases to avoid, and preferred replacements. Writing instructions work best for durable preferences such as sentence length, level of detail, or the kinds of examples each article should include. ## Train on your writing Add a sample using pasted text, a public article URL, or a supported document file. Voice training costs 5 credits. Review proposed preferences before accepting them. You can remove an active preference later. When you choose a file, Kitful lets you review the extracted text before submitting it. ## Re-analyze the website Use **Re-analyze** after the site's public positioning, audience, or products change significantly. Re-analysis costs 2 credits. Changing the domain in General settings also starts an analysis for the new site. Brand & voice shows the in-progress state instead of presenting the previous domain's profile as current. ## Choose brand mention strength - **Off** avoids brand mentions. - **Subtle** mentions the brand only when relevant. - **Strong** weaves the product through the article. You can override this default for an individual article or campaign. --- # Media and internal links > Set image and video defaults, index public site pages, and guide internal links in generated articles. Media settings control the visuals generated with future articles. Internal linking settings help new articles connect to useful public pages on the same site. ## Set media defaults Open **Settings > Media**. Changes save automatically. Choose whether future generated articles should include: - a featured image - the article title inside the featured image - in-article images - a relevant YouTube embed when one is available When in-article images are enabled, choose **Auto**, **Minimal**, or **Rich** density. You can also select an image style, add optional style notes, and set brand colors. Generated images cost 2 credits each. The Create estimate reflects the maximum for the selected settings. ## Index site pages Open **Settings > Internal linking** and click **Index site**. A website domain must be saved first. Kitful reads eligible public pages from the site and shows progress while indexing. You can leave the page and return later. Use **Re-index site** after important navigation or content changes. ## Control automatic links After pages are indexed, choose whether Kitful should add relevant links to new articles and set the maximum number of links per article. You can also provide path patterns that should not be used. Use one pattern per line when excluding groups such as private docs, tag archives, or utility pages. ## Add preferred links Preferred links give Kitful a page and anchor phrase you want considered when relevant. Add only pages that genuinely help the reader. Remove a preferred link when it is outdated or no longer important. > Internal links apply to future generation: > > Changing these settings does not rewrite articles that are already complete. Edit an existing article manually or create a rewrite when its links need to change. --- # Members and site access > Invite people to a paid Kitful site, review pending invitations, and remove access when needed. Members share access to one site workspace. Invitations require an active paid plan and can be managed by the site owner. ## Invite a member 1. Open **Settings > Members**. 2. Click **Invite member**. 3. Enter the person's email address. 4. Send the invitation. The invite appears under **Pending** until it is accepted, canceled, or expires. ## Understand access The **Owner** manages the site, settings, members, and invitations. An invited **Member** can access the shared site and its content. Membership belongs to that site. Invite the same person separately when they also need access to another site. ## Cancel a pending invitation Open the **Pending** tab and click **Cancel** beside the invitation. An expired invitation is labeled **Expired** and no longer grants access. ## Remove a member Open the member actions and choose **Remove from site**. Confirm the removal. This removes access to the Kitful workspace but does not delete work already created or content published outside Kitful. > Only owners manage access: > > Members cannot invite or remove other people. If the paid subscription becomes inactive, shared access can also be limited until the owner restores the plan. --- # Publishing integrations > Choose a publishing destination, connect it to one site, and understand how articles move out of Kitful. Publishing integrations send finished Kitful articles to the platform that owns your site. Connections belong to one Kitful site and require an active paid plan. ## Supported destinations | Destination | Best for | | ----------------------------------------- | -------------------------------------------------------------------------- | | [WordPress](/docs/integrations/wordpress) | Self-hosted WordPress through the Kitful plugin or an application password | | [Framer](/docs/integrations/framer) | A Framer CMS collection connected through the Kitful plugin | | [Ghost](/docs/integrations/ghost) | A Ghost publication with a custom integration | | [Shopify](/docs/integrations/shopify) | A selected blog in a Shopify store | | [Webhooks](/docs/integrations/webhooks) | A custom HTTPS endpoint owned by your team | ## Connect a destination 1. Open **Integrations** inside the correct site. 2. Click **Add** for the destination. 3. Enter the required credentials or complete its plugin flow. 4. Test or confirm the connection when that option is shown. 5. Keep the connection enabled. Credentials stay with that site. Add another connection when a different site needs its own destination. ## Choose how to publish - Publish immediately from an article. - Create a future slot under **Articles > Scheduled**. - Select the destination in a campaign so completed articles publish on its cadence. Read [Publish and schedule](/docs/publish-and-schedule) for these workflows. ## Reconnect or remove Reconnect after credentials, permissions, or the destination project change. Disabling a connection keeps it available but prevents new publishing through it. Deleting it removes the Kitful connection and does not delete posts already published elsewhere. --- # Connect WordPress > Connect a self-hosted WordPress site with the Kitful plugin or a WordPress application password. Use WordPress when you want Kitful to publish articles directly to a self-hosted WordPress site. ## Choose a connection method - **WordPress Plugin** provides the simplest setup and keeps publishing defaults in WordPress. - **WordPress Manual** connects through WordPress REST access and an application password. ## Connect with the Kitful plugin You need a self-hosted site, WordPress administrator access, and the [Kitful plugin](https://wordpress.org/plugins/kitful/). 1. Install and activate **Kitful** from WordPress.org. 2. Open **Settings > Kitful** in WordPress. 3. Review the generated secret and click **Connect to Kitful**. 4. Sign in to Kitful if asked. 5. Choose the Kitful site when more than one is available. 6. Return to WordPress after confirmation. The plugin applies its local defaults for post status, author, and categories. ## Connect manually Make sure the site uses HTTPS and its permalink setting is not **Plain**. 1. In WordPress, open **Users** and then your profile. 2. Create an **Application Password** and keep it safe during setup. 3. In Kitful, open **Integrations** and add **WordPress Manual**. 4. Enter **Integration Name**, **WordPress Site URL**, **Username**, and **Application Password**. 5. Click **Test**, then **Connect**. ## Publish or use a campaign Open an article, click **Publish**, choose the WordPress connection, and confirm. For recurring publishing, select the connection in the campaign's **Settings** tab. ## Troubleshoot WordPress ### The connection test fails Confirm the URL, username, application password, post permissions, HTTPS, and permalink setting. Security plugins or firewalls can also block publishing requests. ### A hosted Kitful connection cannot reach WordPress The WordPress site must be publicly reachable. A site available only on localhost cannot receive a production publish request. --- # Connect Framer > Connect a Framer project through the Kitful plugin and publish articles into Framer CMS. Use Framer when you want Kitful to publish articles into a CMS collection in your Framer project. ## Before you begin You need a Framer project with CMS, the Kitful plugin, a Framer Server API key for the project, and a Kitful site with at least one article. ## Create a Server API key 1. Open the project in Framer. 2. Open **Site Settings**. 3. Go to **General > API Keys**. 4. Click **Create Server API Key**. 5. Copy the key for the connection step. ## Connect the plugin 1. Install **Kitful** from the Framer plugin marketplace. 2. Open the plugin inside the project. 3. Click **Connect Kitful** and sign in if asked. 4. Choose the Kitful site when more than one is available. 5. Paste the **Framer Project Link** and **Server API Key**. 6. Click **Connect Workspace**. The plugin remembers the selected connection on that device. ## Publish from Kitful Publishing happens in the Kitful dashboard. Open an article, click **Publish**, choose Framer, and confirm. You can also select Framer in a campaign or scheduled slot. Articles go into a Framer CMS collection named **Kitful Posts**. If it does not exist, Kitful creates it during publishing. If it was deleted, the next publish can create it again. ## Published fields The collection supports the article title, slug, excerpt, content, featured image, SEO title and description, canonical URL, language, timestamps, and status. ## Disconnect correctly - **Disconnect** in the plugin clears the saved connection on that device only. - **Delete** in Kitful removes the publishing integration. The plugin resets when it next checks the connection. ## Troubleshoot Framer Reconnect if the saved device connection was cleared, the Kitful integration was removed, or the Server API key changed. If publishing succeeds but content is not visible, confirm the **Kitful Posts** collection and the Framer page that renders it. --- # Connect Ghost > Connect a Ghost publication with a custom integration and publish articles from Kitful. Use Ghost when you want Kitful to publish articles directly to a Ghost publication. ## Get Ghost credentials 1. Open Ghost admin. 2. Go to **Settings > Integrations**. 3. Create or open a custom integration. 4. Copy its **Admin API URL** and **Admin API Key**. ## Connect Ghost in Kitful 1. Open **Integrations** in the correct Kitful site. 2. Click **Add** on Ghost. 3. Enter **Integration Name**, **Ghost API URL**, and **Admin API Key**. 4. Click **Test**. 5. Click **Connect**. ## Publish an article Open an article, click **Publish**, choose the Ghost connection, and confirm. To use Ghost with a campaign, choose it under the campaign's **Settings** tab. ## Troubleshoot Ghost ### The key format is invalid Copy the complete Admin API key again without adding spaces or removing characters. ### The test or publish fails Confirm the API URL, public reachability, and current key. Re-test or reconnect after rotating a key in Ghost. --- # Connect Shopify > Connect a Shopify store, select a blog, and publish articles from Kitful. Use Shopify when you want Kitful to publish articles to a blog in your store. ## Prepare the Shopify app You need permission to install or configure apps. Make sure the app has **read\_content** and **write\_content** access so Kitful can find blogs and create posts. ## Connect Shopify in Kitful 1. Open **Integrations** in the correct Kitful site. 2. Click **Add** on Shopify. 3. Enter **Integration Name**, **Shop Domain**, **Client ID**, and **Client Secret**. 4. Click **Test**. 5. Choose the blog that should receive articles. 6. Click **Connect**. ## Publish an article Open an article, click **Publish**, choose Shopify, and confirm. For recurring publishing, select the connection in the campaign's **Settings** tab. ## Troubleshoot Shopify ### Blogs cannot be loaded Confirm the content permissions, store, app installation, domain, Client ID, and Client Secret. Create at least one Shopify blog before testing again. ### Publishing fails later Test the integration again and confirm the selected blog still exists. Reconnect if the app credentials or permissions changed. --- # Connect a webhook > Send finished articles to a custom HTTPS endpoint and verify signed requests. Use a webhook when another system should receive finished articles and no built-in destination fits the workflow. ## Connect a webhook You need a public HTTPS endpoint. You can also add a shared secret for signed requests. 1. Open **Integrations**. 2. Click **Add** on Webhook. 3. Enter **Integration Name**, **Webhook URL**, and an optional **Secret**. 4. Optionally click **Test**. Kitful sends a sample article payload and reports the endpoint's HTTP result. 5. Click **Save**. ## Request format Kitful sends a POST request with `Content-Type: application/json`. ```json { "id": "01EXAMPLEARTICLE", "title": "How to plan a CRM migration", "slug": "plan-a-crm-migration", "html": "

Plan the migration

...

", "excerpt": "A practical migration plan for growing teams.", "metaTitle": "How to Plan a CRM Migration", "metaDescription": "Prepare data, people, and timing for a safer CRM move.", "featuredImage": { "url": "https://cdn.example.com/crm-migration.webp", "alt": "CRM migration planning board" }, "tags": ["crm", "operations"], "publishedAt": "2026-07-20T09:00:00.000Z" } ``` Fields that are not set can be empty or null. Treat the article ID as an opaque identifier. ## Verify a signed request When a secret is set, each request includes: ```text X-Kitful-Signature: sha256={hex_signature} ``` The value is an HMAC-SHA256 signature of the raw JSON body using your secret. ```js import crypto from 'node:crypto'; function isValidKitfulRequest(rawBody, secret, signature) { const digest = crypto.createHmac('sha256', secret).update(rawBody).digest('hex'); return signature === `sha256=${digest}`; } ``` Verify the signature before parsing or acting on the payload. Compare signatures in constant time when your runtime provides that option. Test requests use the same payload shape and signature, plus this header: ```text X-Kitful-Test: true ``` Do not create or publish an article when this header is present. ## Publish through the webhook Choose the webhook from an article's **Publish** dialog, a scheduled slot, or campaign settings. The receiving endpoint must return a successful status only after it accepts the article. ## Troubleshoot webhooks - For 401 or 403 responses, check the receiving service's authentication and shared secret. - For a 404 response, check the exact endpoint path. - For another non-success response, inspect the receiving service logs, fix the endpoint, and publish again.