` for re-publishes. Updating an article overwrites the same file in a new commit — no duplicates.
The file contains everything your site needs to render the page:
```json theme={null}
{
"slug": "ai-ad-agency",
"title": "AI Ad Agency in 2026: What It Is and How to Pick One",
"body_markdown": "Full article body in Markdown...",
"body_html": "The same body rendered as HTML...
",
"meta_title": "AI Ad Agency 2026 — Guide",
"meta_description": "Learn how to pick an AI ad agency in 2026...",
"excerpt": "Short summary for blog listing cards.",
"primary_keyword": "ai ad agency",
"image": {
"url": "https://.supabase.co/storage/v1/object/public/workspace-article-images-public//featured.jpg",
"alt": "Descriptive alt text for the featured image"
},
"published_at": "2026-06-12T10:00:00.000Z",
"updated_at": "2026-06-12T10:00:00.000Z",
"status": "published"
}
```
| Field | What it is |
| - | - |
| `slug` | URL slug; also the file name |
| `title` | Article headline (H1) |
| `body_markdown` | Full body in Markdown |
| `body_html` | The same body pre-rendered as HTML |
| `meta_title` | SEO title tag |
| `meta_description` | SEO meta description |
| `excerpt` | Short summary for listing pages |
| `primary_keyword` | The keyword the article targets |
| `image` | Featured image as `{ url, alt }`, or `null` when the article has none. The image is hosted by Ryze on a public CDN — use the URL directly. Only the host is stable: the path after it can change between articles, so allow the whole host in `next.config` `remotePatterns`, your CSP or any URL filter instead of pinning a path. |
| `published_at` | First publish time (ISO 8601) |
| `updated_at` | Last update time (ISO 8601) |
| `status` | Always `published` |
## Wiring it into your site
Your site decides how to render the files. The typical pattern for a Next.js blog:
1. Read all JSON files from the configured folder at build time (or via the GitHub API at request time).
2. Generate a route per `slug` and render `body_html` (or `body_markdown` through your own renderer).
3. Use `meta_title` and `meta_description` for the page's SEO tags, and `excerpt` on the blog index.
4. When `image` is present, use `image.url` for the article's hero and `og:image`, and `image.alt` for the alt text. Handle `image: null` by falling back to a default or omitting the hero.
If your host (Vercel, Netlify) deploys on push, every published article triggers a deploy automatically — the commit Ryze makes is a normal Git push.
## Notes
* Ryze only ever writes inside the folder path you configure. It doesn't touch other files in the repo.
* If the folder doesn't exist yet, the first commit creates it.
* To change the repository, blog URL, or folder later, open the integration settings and update them — future publishes use the new values.
* To disconnect, uninstall the Ryze app from your GitHub account's **Settings → Integrations → Applications** or remove the integration in Ryze.
Need help? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect GoDaddy Airo
Source: https://help.get-ryze.ai/integrations/godaddy-airo
Publish articles to a site built with GoDaddy Airo. Ryze signs in, adds the article files and clicks Publish.
GoDaddy Airo has no publishing API. To publish, Ryze signs in to GoDaddy with the login you give it, asks Airo's chat to add the article files to your project, and clicks **Publish**, the way you would. Your login and password are stored encrypted.
**Publish deploys the whole project.** Any changes you made in Airo but haven't published yet go live with the next article.
## Before you connect
* **Your GoDaddy username or customer number and password.** You'll find your customer number in Airo under **Menu**.
* **No verification code on login.** If GoDaddy asks for a code when Ryze signs in, the connection is refused. Turn off two-step verification for this login first.
* **An Airo plan that can publish a live site.** Ryze checks the plan during connect and refuses a plan that can't publish.
* **Airo AI credits.** Connecting, each publish batch and each unpublish send a prompt to Airo, and prompts spend your Airo AI credits. See [Credits](#credits).
The free Airo address (`*.airoapp.ai`) tells search engines not to index the site. For articles to show up in Google, connect your own domain to the site in Airo.
## Connect in Ryze
Open the project in Airo and copy the link from the browser address bar. It looks like `https://airo-builder.godaddy.com/develop/…`.
On the **Integrations** page, click **Connect** on the GoDaddy Airo card.
* **Project URL** — the link you copied
* **GoDaddy username or customer #** — your username or customer number
* **Password** — the password for that login
The dialog shows each step as it happens: **Logging in to GoDaddy Airo**, **Checking your GoDaddy Airo plan and credits**, **GoDaddy Airo is setting up your blog**, then **Saving the connection**. Setup usually takes 1–2 minutes.
### What the setup prompt does
During connect, Ryze sends Airo one prompt that sets up the blog:
* Articles become JSON files in `src/data/articles/`, one file per article.
* `/blogs` lists every article, newest first.
* `/blogs/{slug}` shows one article, with its title, meta description, cover image and body in the HTML the server returns, plus an absolute canonical link.
* Your site's **sitemap.xml** lists `/blogs` and every article, keeping every URL it already has, and **robots.txt** gets a `Sitemap:` line, keeping every rule it already has. If these were static files, the prompt replaces them with server routes that serve the same content.
* If your site already has a blog, Airo rewires that blog to read these files and keeps its design. Otherwise it adds a **Blog** link to the main navigation.
The prompt asks Airo not to change anything else on the site and not to install new packages. **Every reconnect sends this prompt again.** The connect dialog shows this summary before you connect.
## How publishing works
Articles go out in the daily publishing window that starts at 20:00 UTC, in batches of up to 5 articles per site. For each batch Ryze:
1. Attaches the article files and sends **one** prompt asking Airo to copy them into `src/data/articles/`. Airo copies the files as they are and never rewrites the text.
2. Clicks **Publish** and waits for GoDaddy to finish the deployment.
3. Opens each article on your live site and checks its title, meta description and text. This check waits up to 2 minutes.
Each article lives at your published site's address plus `/blogs/{slug}`.
## Credits
| Action | Prompts | Airo credits in our tests |
| - | - | - |
| Connect or reconnect (setup) | 1 | about 4 |
| Publish batch of up to 5 articles | 1 | about 1 |
| Republish one article | 1 | about 1 |
| Unpublish an article | 1 | about 1 |
| Clicking **Publish** | 0 | free |
These are approximate. Airo decides the cost of each prompt.
Ryze checks your credits before every prompt. When the account is out of credits, publishing stops with a message until you add credits or the monthly credits come back.
## When Airo is busy with your own prompt
Before it sends anything, Ryze checks whether Airo is working on one of your prompts. If it is, Ryze leaves the project alone:
* **Scheduled publishing** waits 30 minutes and tries again, up to twice. If Airo is still busy, the articles stay due and go out in the next daily window. Until then the article shows a "Publishing was postponed" warning.
* **Publish, Republish or Unpublish from the article page** stops with "GoDaddy Airo is working on one of your prompts right now. Try again in a few minutes."
## Republish and unpublish
* **Republish** replaces the article file in place. If the slug changed, the same prompt deletes the old file, so the old address stops working.
* **Unpublish** sends one prompt that deletes the article file, clicks **Publish**, and waits until the page is gone from your live site.
## Troubleshooting
| Message | What to do |
| - | - |
| The builder rejected this login and password | Check the username or customer number and the password, then connect again. |
| The builder asked for a verification code on login | Turn off two-step verification for this login, then connect again. |
| The builder's login page did not show the field Ryze expected | This account signs in with Google, GitHub or an emailed link. Invite a collaborator account that signs in with an email and password, and connect with that one. |
| Enter the project address / Enter the project URL from the builder's address bar | Copy the project link from the builder's address bar (`https://airo-builder.godaddy.com/develop/…`), not your live site's address. |
| This login has no access to that project | Check the project link, or log in with the project owner's account. |
| This Airo plan cannot publish sites | Upgrade to an Airo plan that includes a live site. |
| GoDaddy Airo is out of credits for this account | Add credits, or wait for the monthly credits in Airo. |
| GoDaddy Airo is working on one of your prompts right now | Let your prompt finish, then try again. Scheduled publishing retries on its own. |
| The builder did not finish the request in time | Try again in a few minutes. Scheduled publishing retries on its own. |
| The builder's Publish did not finish in time | Try again in a few minutes. Scheduled publishing retries on its own. |
| The published site does not show the article yet | Try again in a few minutes. Scheduled publishing retries on its own. |
| Another publish for this project is still running | Wait a few minutes for it to finish. |
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Google Ads
Source: https://help.get-ryze.ai/integrations/google-ads
Connect Google Ads to Ryze so you can ask about spend, ROAS, and performance, and let the agent manage campaigns under your approval settings.
Connecting Google Ads lets you ask about campaign performance in plain language and lets the agent act on campaigns under your approval settings.
## Requirements
* A Google login with access to at least one Google Ads account; standard or admin access to allow changes
* For agencies: connect the manager (MCC) login once — the agent can reach every client account under it; name the client in chat
## Connect
Open **Integrations** in the left sidebar and find **Google Ads** under **Advertising**.
You're redirected to Google. Sign in with the login that has access to your ad accounts and approve access — keep every requested permission checked.
That's it — there's no account to pick. Ryze sees every Google Ads account that login can reach, and the card shows **Connected**. The agent can use it from your next message.
## Choose the accounts the agent uses by default
If the login reaches many ad accounts, click **View** on the card and use **Agent default accounts** to select the ones the agent should work with first. It can still reach all the others — just name one in chat. See [Agent default accounts](/integrations/multiple-accounts#agent-default-accounts).
To connect a second Google login, click **View** → **Add one more account**.
## What you can ask
> Pull the last 7 days of Google Ads spend and break it down by campaign.
> Which campaigns have ROAS below 2 this month?
> What changed in my account in the last week?
## What the agent can do
The agent can create and adjust campaigns, manage budgets, and generate ad creatives.
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
Improvements the agent finds on its own go to your [Inbox](/agent/approvals) instead: nothing there changes until you approve. In Claude, approvals are set in Claude itself — set write and delete tools to **Needs approval** to be asked first (see [Permissions & approvals](/claude/permissions)).
Check your **Tool approvals** setting before you ask the agent to work on a live spending account. This is the connection where an unwanted change costs real money.
## Troubleshooting
**"This Google account has no access to a Google Ads account."** You signed in with a login that isn't on any Google Ads account. Connect again with the login that has access to your ad account.
**"This Google login has no accessible Google Ads accounts — reconnect Google Ads with a login that can access the ad account."** The connected login doesn't reach any Google Ads account. Click **View** → **Add one more account** and sign in with the login that has access, then remove the old one with the trash icon.
**An account is missing.** The connected login can't reach it, or it sits under a manager account you didn't sign in with. Connect the right login with **Add one more account**.
**Changes rejected.** The connected user likely has read-only access. Google Ads permissions are set in Google, not in Ryze.
**Data looks delayed.** Google Ads reporting lags for recent conversions, particularly view-through and cross-device.
## Related
* [Paid Ads introduction](/paid-ads/introduction)
* [Managed campaigns](/paid-ads/managed-campaigns)
* [Connect multiple accounts](/integrations/multiple-accounts)
# Connect Google Analytics
Source: https://help.get-ryze.ai/integrations/google-analytics
Connect a GA4 property to Ryze so it can attribute traffic, conversions, and revenue across SEO and paid ads.
Google Analytics supplies the behaviour and conversion side of reporting — what visitors did after arriving. Ryze uses it to tie SEO and ad work to revenue rather than to traffic alone. On the Integrations page it's called **Google Analytics 4**.
## Requirements
* A **GA4** property (Universal Analytics is no longer supported by Google)
* At least Viewer access on the property
* Ecommerce tracking configured, if you want revenue attribution
## Connect
Open **Integrations** in the left sidebar and find **Google Analytics 4** under **Analytics**.
You're redirected to Google. Sign in and approve access — keep every requested permission checked.
Back in Ryze, the Google Analytics 4 window opens on its own. Pick the **Property** for this workspace (listed as *account — property*) and click **Save**.
Until a Property is saved, the card shows **Require setup**. Click **View** to finish.
## Change the Property or default accounts later
Click **View** on the card to change the **Property**, pick **Agent default accounts** (the properties the agent looks at first when you don't name one — see [Agent default accounts](/integrations/multiple-accounts#agent-default-accounts)), or connect another Google login with **Add one more account**.
## What Ryze uses it for
* Traffic by channel, so organic and paid can be separated
* Conversion and revenue attribution
* Landing page performance
* Traffic from AI assistants (ChatGPT, Perplexity and others) by engine and landing page — see [AI Visibility](/seo/ai-visibility)
## Multiple properties
A brand running several domains can connect more than one Google login and choose a property for each. See [Connect multiple accounts](/integrations/multiple-accounts). For separate clients, use a separate workspace.
## Troubleshooting
**No properties to pick.** The Google login you used lacks access. Connect with a login that has it.
**Revenue shows as zero.** Ecommerce tracking is likely not configured in GA4, or purchase events are not firing. This is a GA4 setup issue, not a Ryze one.
**Numbers disagree with Shopify.** Expected. GA4 and Shopify attribute differently and use different session and conversion definitions. Use each consistently rather than trying to reconcile them exactly.
**Card shows Reconnect needed.** Click **Reconnect** and sign in to Google again.
## Related
* [Connect Google Search Console](/integrations/google-search-console)
* [Reports](/agent/reports)
# Connect Google Drive
Source: https://help.get-ryze.ai/integrations/google-drive
Connect Google Drive so you can hand the agent Sheets, Docs, and files you pick — to read, update, or create.
Google Drive connects with **OAuth** on your Google account. Once connected, you pick specific files from the chat composer and the agent can read them, update them, or create new ones — for example, reading a keyword list from a Sheet, or writing a report into a Doc.
## Connect in Ryze
Open **Integrations** in the left sidebar and find the **Google Drive** card (under **Files**).
Approve access. Ryze only works with the files you explicitly pick — it doesn't browse your Drive on its own.
You can also connect straight from the chat: click **+** (**Add to message**) in the composer, then **Attach files** → **Upload from Drive**. If Drive isn't connected yet, Ryze starts the connection and brings you back to the file picker afterwards.
Drive connects one Google account per workspace.
## Using it in chat
Click **+** (**Add to message**) in the composer → **Attach files** → **Upload from Drive**, then pick one or more files in the Google picker. They're attached to your message, and the agent can read, update, or create files as you ask.
## Limits
* **Images** picked from Drive aren't supported — upload them from your computer instead (**Attach files** → **Upload from computer**).
* Files over **10 MB**, binary files, and Google formats other than Sheets, Docs and Slides are attached by name only — the agent can't read their content.
* When the agent writes into a Google Doc, it writes **plain text** (no headings, links or formatting), and it can only add text at the end or replace the whole document.
## Troubleshooting
* **Reconnect needed** — Google revoked the access (password change or a revoked app). Click **Reconnect**.
* **Picker shows the wrong account or no files** — the picker always opens the Google account you connected on the **Integrations** page; the account you're signed in to in the browser doesn't matter. To use another Google account, click **View** on the **Google Drive** card, disconnect it with the trash icon, and connect again with the other login. Only one Google account can be connected for Drive.
* **"Images from Google Drive aren't supported — upload them directly."** — upload the image from your computer instead.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Google Search Console
Source: https://help.get-ryze.ai/integrations/google-search-console
Connect Google Search Console so Ryze picks keywords from your own search data and tracks whether Google indexes and ranks your pages.
Prefer video? Watch the [Setting up SEO guide](/guides/seo-setup).
Google Search Console supplies the queries and pages you already appear for. Connect it before you start SEO: without it, Ryze can't pick keywords from your own search data or show whether Google indexed and ranked the articles it publishes.
## Requirements
* A verified Search Console property for your site
* A Google login with access to that property
* The property type matching how your site is served — a Domain property covers all subdomains and protocols; a URL-prefix property covers only that exact prefix
## Connect
Open **Integrations** in the left sidebar. Use the **Search integrations** box or the **Analytics** filter to find **Google Search Console**.
You're redirected to Google. Sign in and approve access — keep every requested permission checked.
Back in Ryze, the Google Search Console window opens on its own. Ryze pre-selects the **Site** that matches your workspace domain. Check it, change it if needed, and click **Save**.
Until a Site is saved, the card shows **Require setup**. Click **View** to finish.
## Change the Site or default accounts later
Click **View** on the card. There you can:
* change the **Site** for this workspace;
* pick **Agent default accounts** — the sites the agent looks at first when you don't name one. It can still reach every site on that login. See [Agent default accounts](/integrations/multiple-accounts#agent-default-accounts);
* add another Google login with **Add one more account**.
## What Ryze uses it for
* Keyword discovery from queries you already receive impressions for
* Finding pages ranking just outside click-earning positions
* Finding new article topics in your impression data
* Indexation monitoring
* Measuring whether published work earned impressions and clicks
* Checking a page's index status when you ask (URL Inspection)
* Submitting or removing sitemaps in Search Console when you ask (removing one doesn't touch the file on your site) — these changes follow your chat's [**Tool approvals**](/agent/chat#tool-approvals) setting
## Data timing
Google reports with a **2–3 day delay** and provides up to **16 months** of history. Recently published pages will not appear immediately.
## Troubleshooting
**No sites to pick.** The Google login you used has no access to a verified property. Connect with the login that does, or add it with **Add one more account**.
**Data looks incomplete.** Check the property type — a URL-prefix property for `https://www.example.com/` excludes `https://example.com/` traffic.
**Card shows Reconnect needed.** Click **Reconnect** and sign in to Google again. Google access can be revoked by a password change or an admin policy.
## Related
* [Connect your platforms](/integrations/overview)
* [Connect Google Analytics](/integrations/google-analytics)
# Connect HighLevel
Source: https://help.get-ryze.ai/integrations/highlevel
Connect a HighLevel (GoHighLevel) sub-account with a private integration token so Ryze can publish articles to your HighLevel blog and the agent can manage its posts.
HighLevel connects with a **private integration token** from the sub-account that owns your blog. Once connected, programmatic articles publish straight to the HighLevel blog you pick.
HighLevel needs an existing blog in the sub-account. If there is no blog yet, create one in HighLevel first (**Sites → Blogs**) — without it there is nothing to pick and nothing to publish to.
## Step 1 — Create a private integration token
In the HighLevel **sub-account**, go to **Settings → Private Integrations**.
Create a token and grant the **Blogs** scopes (View and Edit Blogs). Copy the token.
In the same sub-account, go to **Settings → Business Profile** and copy the **Location ID**.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **HighLevel** card and fill in:
* **Private integration token** — the token you created
* **Location ID** — from Business Profile
* **Blog URL** — the public URL where your blog posts live, e.g. `https://yoursite.com/blog` (used to link published articles)
Click **Continue**. If the sub-account has one blog, Ryze picks it for you; if it has several, pick the **Blog** to publish to and click **Save**. The card shows **Connected** — click **View** to see the connection, labelled with **HighLevel** and your Location ID, and to change the **Blog** later.
## What the agent can do
Besides publishing, the agent can read, create, update and delete blog posts in that sub-account when you ask in chat.
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
## Troubleshooting
* **"No blogs found in this HighLevel location. Create a blog in Sites → Blogs first."** — the sub-account has no blog yet. Create one in HighLevel, then click **View** on the HighLevel card and pick it.
* **"This HighLevel location has more than one blog. Pick the one to publish to in the HighLevel integration settings."** — click **View** on the HighLevel card, choose the **Blog**, and click **Save**.
* **"No blog authors found in this HighLevel location. Add an author in HighLevel, then publish again."** — add a blog author in HighLevel, then publish the article again.
* **"HighLevel requires a featured image and this article has none. Add one, then publish again."** — add a cover image to the article and publish again.
* **"Could not upload the featured image for HighLevel. Try publishing again."** — the cover image upload failed. Publish the article again.
* **Connecting or publishing fails with an access error** — the token is missing the Blogs scopes. Re-create it with **View and Edit Blogs** in the same sub-account, then disconnect the old connection in **View** and connect again with the new token.
* **"Token does not have access to this location"** — the token was created in a different sub-account than the Location ID. Both must come from the same sub-account.
* **Blog URL rejected** — it must be a public `https://` URL.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect HubSpot
Source: https://help.get-ryze.ai/integrations/hubspot
Connect your HubSpot account with OAuth so the agent can read and edit CRM contacts, companies, and deals, plus CMS blog content.
HubSpot connects with **OAuth** — you sign in to HubSpot and approve access, so Ryze never sees your password. Once connected, the agent can read and edit your CRM contacts, companies, and deals, read your contact lists and account owners, and manage CMS blog content — and delete records or blog posts when you ask.
## Step 1 — Connect in Ryze
On the **Integrations** page, find the HubSpot card and click **Connect**. You're redirected to HubSpot to authorize.
## Step 2 — Authorize in HubSpot
Sign in to the HubSpot account you want to connect, or create a new one.
If you have access to more than one HubSpot account (portal), pick the one you want Ryze to work with, then click **Choose Account**.
Review the requested permissions and approve. HubSpot sends you back to Ryze and the connection is saved.
## Step 3 — Confirm the connection
Back in Ryze, the HubSpot card shows a **Connected** badge. Click **View** on the card to see the account you linked — identified by its HubSpot domain (like `yourcompany.com`).
## Connect multiple accounts
You can connect more than one HubSpot account (portal) in the same workspace. Click **View** on the HubSpot card, then **Add one more account**, and repeat the authorization. See [Connect multiple accounts](/integrations/multiple-accounts) for how the agent picks between them.
## What the agent can do
Once connected, the agent works with HubSpot through your account:
* **CRM records** — read and edit contacts, companies, and deals
* **Search** — filter and query records with the HubSpot CRM Search API
* **Lists** — read your contact lists
* **Owners** — look up account owners to attribute records
* **CMS** — read and edit blog content
* **Delete** — delete records or blog posts when you explicitly ask. Most CRM deletes move the record to HubSpot's recycling bin; deleted blog posts may not be recoverable.
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
## Publishing articles to HubSpot
HubSpot is also a **publishing destination**: programmatic articles can land on your HubSpot blog instead of (or as well as) a separate CMS.
* Click **View** on the HubSpot card, pick the **Blog** and the **Author** the posts should use, and click **Save** — both are stored choices, so every article publishes consistently. Reconnecting the same HubSpot account keeps them.
* Ryze publishes using HubSpot's own slug and publish rules, and only marks an article as published once HubSpot confirms the post is actually live.
* If an image can't be uploaded to HubSpot, the article still publishes and the skipped image shows as a **warning** on the article, so you can fix it rather than lose the post.
The **Blog** and **Author** choices are only needed if you publish articles to HubSpot — if you use HubSpot for CRM only, leave them empty. If the lists are empty, create a blog in HubSpot (**Content → Blog**) and an author (**Content → Blog → Authors**), then click **View** on the HubSpot card and pick them — no need to reconnect.
## Troubleshooting
* **Wrong account connected** — each connection is one HubSpot portal. To switch, click **View** on the HubSpot card and connect the right portal with **Add one more account**, and remove the wrong one with **Disconnect** (the trash icon) in the same window.
* **Connection stopped working** — click **Reconnect** on the HubSpot card and re-authorize. This refreshes access if permissions changed or the token was revoked in HubSpot.
* **Missing records or fields** — HubSpot returns a default set of properties; ask the agent for the specific fields you need. If a whole object type is missing, the connected user may not have access to it in HubSpot.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Instantly
Source: https://help.get-ryze.ai/integrations/instantly
Connect Instantly with a v2 API key so the agent can work with cold email campaigns, sending accounts, leads, and campaign analytics.
Instantly connects with a **v2 API key**. Once connected, the agent can report on cold email campaigns, sending accounts, leads, and campaign analytics — and, with an `all:all` key, make changes when you ask.
## Step 1 — Create a v2 API key
In Instantly, go to **Settings → Integrations → API Keys → Create** and choose **v2**. Pick the scope:
* `all:read` — reporting only
* `all:all` — the agent can also manage campaigns
Copy the key.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Instantly** card, paste the key into **API key (v2)**, and click **Continue**.
## What the agent can do
* **Read** — campaigns and their analytics (sends, opens, replies, bounces, opportunities), sending accounts and warmup health, emails, and leads
* **Change** (`all:all` key) — add leads to a campaign, edit, activate or pause campaigns, and reply to email threads when you ask
* **Delete** (`all:all` key) — delete leads or campaigns when you explicitly ask
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step. Lead searches count as changes too, so with **Approve write & delete** on you're also asked to approve them.
## Troubleshooting
* **Key rejected** — make sure you created a **v2** key and copied all of it.
* **Campaign changes are rejected** — the key is scoped to `all:read`. Create a key with `all:all`, then disconnect Instantly in **View** and connect again with the new key.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Klaviyo
Source: https://help.get-ryze.ai/integrations/klaviyo
Connect your Klaviyo account with a private API key so Ryze can read and manage your email and SMS marketing.
Klaviyo connects with a **private API key** — a key you generate in Klaviyo that lets Ryze work with your campaigns, flows, lists, and reporting without sharing your login. Pick the access level that matches what you want Ryze to do: **Full Access** if you want the agent to create and manage things (campaigns, lists, flows), or **Read-Only** if you only want reporting.
## Step 1 — Generate a private API key
In Klaviyo, click your **account name** in the lower-left corner, then click **Settings**.
Go to the **API keys** tab and click **Create Private API Key**. Give it a name like `Ryze` so you can recognize it later.
Pick **Full Access** if you want Ryze to create and manage campaigns, lists, and flows. Pick **Read-Only** if you only want reporting. Avoid a custom key unless you know which scopes you're enabling.
Click **Create**, then copy the key (it starts with `pk_`). Klaviyo shows it once — copy it now.
The private API key is shown only once. If you lose it, delete it in Klaviyo and create a new one — keys can't be edited after creation.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the Klaviyo card, then paste your key into the **Private API key** field and click **Continue**. Ryze verifies the key against your Klaviyo account. The card shows **Connected** — click **View** to see the account name.
## What the agent can do
* **Read** — campaigns, flows, lists, segments, metrics, and performance reports (opens, clicks, conversions, revenue)
* **Change** — create and manage campaigns, lists and flows when you ask (needs a **Full Access** key)
* **Delete** — delete lists and other objects when you explicitly ask (needs a **Full Access** key)
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
Klaviyo serves performance reports through requests that Ryze counts as changes. With **Approve write & delete** on, you're also asked to approve report requests.
## Troubleshooting
* **Key rejected** — make sure you copied the full `pk_...` key and that it has the `accounts:read` scope. A Read-only or Full key always includes it; a custom key may not.
* **Can't find API keys** — they live under **Settings → API keys** (click your account name in the lower-left to reach Settings).
* **Wrong account connected** — each key belongs to one Klaviyo account. To connect a different account, generate a key while logged into that account.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Lightspeed eCom
Source: https://help.get-ryze.ai/integrations/lightspeed
Connect your Lightspeed eCom store with an API key and secret so Ryze can publish blog articles straight to your store.
Lightspeed eCom connects with an **API key and secret** you create in your store's back office. Once connected, programmatic articles publish straight to the blog you pick on your Lightspeed store.
## Step 1 — Create an API key in Lightspeed
In your store's **Back office**, go to **Settings → Developers → API keys**.
Create a new key with **Blogs — read and write** access, and copy both the **API key** and the **API secret**.
It's the language segment in your store URL — for example `en`, `us`, or `nl`.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Lightspeed eCom** card and fill in:
* **API key** and **API secret** — from the key you just created
* **Shop language code** — e.g. `en`
Click **Continue**. Ryze detects your store's cluster automatically and verifies the credentials.
## Step 3 — Choose the blog
Pick the **Blog** articles should publish to and click **Save**. The card shows **Connected**. Click **View** to see what's connected — the store URL and the **Blog** picker.
## Troubleshooting
* **Credentials rejected** — check the key has **Blogs read/write** and that the secret belongs to the same key.
* **No blogs listed** — create a blog in Lightspeed first (Back office → Content → Blogs), then reconnect.
* **Wrong language** — the language code must match the segment in your storefront URL; reconnect with the right one.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Lovable
Source: https://help.get-ryze.ai/integrations/lovable
Publish articles to a site built with Lovable. Ryze signs in, adds the article files and clicks Publish.
Lovable has no publishing API. To publish, Ryze signs in to Lovable with the login you give it, asks Lovable's chat to add the article files to your project, and clicks **Publish**, the way you would. Your login and password are stored encrypted.
**Publish deploys the whole project.** Any changes you made in Lovable but haven't published yet go live with the next article.
## Before you connect
* **An email and password login.** Google and GitHub sign-in don't work.
* **Two-factor authentication off** for that login. If Lovable asks for a verification code, the connection is refused.
* **Lovable credits.** Connecting, each publish batch and each unpublish send a prompt to Lovable, and prompts spend your Lovable credits. See [Credits](#credits).
## Connect in Ryze
Open the project in Lovable and copy the link from the browser address bar. It looks like `https://lovable.dev/projects/…`.
On the **Integrations** page, click **Connect** on the Lovable card.
* **Project URL** — the link you copied
* **Lovable email** — your Lovable login
* **Password** — the password for that login
The dialog shows each step as it happens: **Logging in to Lovable**, **Checking your Lovable plan and credits**, **Lovable is setting up your blog**, then **Saving the connection**. Setup usually takes 1–2 minutes.
### What the setup prompt does
During connect, Ryze sends Lovable one prompt that sets up the blog:
* Articles become JSON files in `src/content/articles/`, one file per article.
* `/blogs` lists every article, newest first.
* `/blogs/{slug}` shows one article, with its title, meta description, cover image and body in the HTML the server returns, plus an absolute canonical link.
* Your site's **sitemap.xml** lists `/blogs` and every article, keeping every URL it already has, and **robots.txt** gets a `Sitemap:` line, keeping every rule it already has. If these were static files, the prompt replaces them with server routes that serve the same content.
* If your site already has a blog, Lovable rewires that blog to read these files and keeps its design. Otherwise it adds a **Blog** link to the main navigation.
The prompt asks Lovable not to change anything else on the site and not to install new packages. **Every reconnect sends this prompt again.** The connect dialog shows this summary before you connect.
## How publishing works
Articles go out in the daily publishing window that starts at 20:00 UTC, in batches of up to 5 articles per site. For each batch Ryze:
1. Attaches the article files and sends **one** prompt asking Lovable to copy them into `src/content/articles/`. Lovable copies the files as they are and never rewrites the text.
2. Clicks **Publish**.
3. Opens each article on your live site and checks its title, meta description and text. This check waits up to 2 minutes.
Each article lives at your published site's address plus `/blogs/{slug}`.
## Credits
| Action | Prompts | Lovable credits in our tests |
| - | - | - |
| Connect or reconnect (setup) | 1 | about 1 |
| Publish batch of up to 5 articles | 1 | about 0.4 for 3 articles |
| Unpublish an article | 1 | varies |
| Clicking **Publish** | 0 | free |
These are approximate. Lovable decides the cost of each prompt.
Ryze checks your credit balance before every prompt. When the workspace is out of credits, publishing stops with a message until you add credits in Lovable or the daily credits come back.
## When Lovable is busy with your own prompt
Before it sends anything, Ryze checks whether Lovable is working on one of your prompts. If it is, Ryze leaves the project alone:
* **Scheduled publishing** waits 30 minutes and tries again, up to twice. If Lovable is still busy, the articles stay due and go out in the next daily window. Until then the article shows a "Publishing was postponed" warning.
* **Publish, Republish or Unpublish from the article page** stops with "Lovable is working on one of your prompts right now. Try again in a few minutes."
### Paused projects
If your project has a paused task (for example, it ran out of credits mid-prompt), Ryze's prompt goes into the same chat and Lovable resumes your paused task along with it, on your credits. Ryze never clicks **Finish up** or **Resume** itself.
## Republish and unpublish
* **Republish** replaces the article file in place. If the slug changed, the same prompt deletes the old file, so the old address stops working.
* **Unpublish** sends one prompt that deletes the article file, clicks **Publish**, and waits until the page is gone from your live site.
## Troubleshooting
| Message | What to do |
| - | - |
| The builder rejected this login and password | Check the login and password, then connect again. |
| The builder asked for a verification code on login | Turn off two-factor authentication for this login, or use a collaborator login without it, then connect again. |
| The builder's login page did not show the field Ryze expected | This account signs in with Google, GitHub or an emailed link. Invite a collaborator account that signs in with an email and password, and connect with that one. |
| Enter the project address / Enter the project URL from the builder's address bar | Copy the project link from the builder's address bar (`https://lovable.dev/projects/…`), not your live site's address. |
| Lovable won't open this project for this login: the project uses connections this account can't access | In Lovable, share the project's connections with this account (or use a login that already has them), then connect again. |
| This login has no access to that project | Check the project link, or log in with the project owner's account. |
| Lovable is out of credits for this project's workspace | Add credits in Lovable, or wait for the daily credits. |
| Lovable is working on one of your prompts right now | Let your prompt finish, then try again. Scheduled publishing retries on its own. |
| The builder did not finish the request in time | Try again in a few minutes. Scheduled publishing retries on its own. |
| The builder's Publish did not finish in time | Try again in a few minutes. Scheduled publishing retries on its own. |
| The published site does not show the article yet | Try again in a few minutes. Scheduled publishing retries on its own. |
| Another publish for this project is still running | Wait a few minutes for it to finish. |
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Magento
Source: https://help.get-ryze.ai/integrations/magento
Connect your Magento 2 / Adobe Commerce store with an integration access token so Ryze can read and edit products, categories, and CMS pages.
Magento connects with an **integration access token** you create in the Magento admin. Once connected, the agent can read and edit products, categories, and CMS pages through the Magento 2 / Adobe Commerce REST API.
## Step 1 — Create an integration in Magento
In the Magento admin, go to **System → Extensions → Integrations** and click **Add New Integration**.
In the **API** tab, grant the **Catalog**, **Content**, and **Stores** resources.
Save the integration, click **Activate**, approve the access, and copy the **Access Token**.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Magento** card and fill in:
* **Store URL** — the root URL of your store, e.g. `https://store.example.com` (without `/rest`)
* **Access token** — the integration access token you copied
Click **Continue**. The card shows **Connected**. Click **View** to see what's connected — the store URL.
## Troubleshooting
* **"Magento rejected the token."** — make sure the integration is **Active** in **System → Extensions → Integrations** (not just saved), and paste a fresh Access Token — not the consumer key.
* **"Magento denied access."** — grant the integration the **Catalog**, **Content** and **Stores** API resources. On Adobe Commerce Cloud, also check your WAF rules.
* **"Connected, but the store returned no store views."** — the integration's API resources don't include **Stores**. Add it and reconnect.
* **"Magento returned a non-JSON response…"** — the Store URL points to a storefront page, not the Magento root. Enter the root URL without a path.
* **"Magento rate-limited the request…"** — Fastly on Adobe Commerce Cloud throttled Ryze. Try again in a few minutes.
* **Can't reach the store** — the Store URL must be the site root with `https://`, without `/rest` or an admin path.
* **Category edits fail** — some category fields are read-only in the Magento API; the agent strips the standard ones automatically, but custom read-only attributes may need excluding on your side.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Mailchimp
Source: https://help.get-ryze.ai/integrations/mailchimp
Connect Mailchimp with an API key so the agent can read and manage audiences, campaigns, automations, and reports.
Mailchimp connects with an **API key**. Once connected, the agent can read your audiences, campaigns, automations, and reports through the Marketing API. It can also make changes when you ask, including sending a campaign — see [What the agent can do](#what-the-agent-can-do).
## Step 1 — Create an API key
In Mailchimp, go to **Account & billing → Extras → API keys**.
Click **Create A Key** and copy it. The key ends with your datacenter, e.g. `-us21`.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Mailchimp** card, paste the key into **API key**, and click **Continue**. Ryze reads the datacenter from the key suffix. The card shows **Connected** — click **View** to see the account name.
## What the agent can do
* **Read** — audiences, members, segments, campaigns and their content, automations, templates, and reports (opens, clicks, revenue)
* **Change** — add or update subscribers, create and edit campaigns, and **send** a campaign when you ask
* **Delete** — remove lists, members or campaigns when you explicitly ask
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
## Troubleshooting
* **Key rejected** — copy the full key including the `-usXX` suffix; without it Ryze can't route to your datacenter.
* **Wrong account** — each key belongs to one Mailchimp account. Create the key while logged in to the account you want.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Managing Multiple Accounts
Source: https://help.get-ryze.ai/integrations/managing-multiple-accounts
Run many accounts from one workspace — chats, reports, schedules, and the agent all work across them.
Want to manage several ad accounts, analytics properties, or store logins in one place? That already works today: connect every account to **one workspace**. Everything in that workspace — platform chats, reports, scheduled tasks, the Ryze agent, and Claude via MCP — can then work across all of them. No special mode or setup is needed.
## The short answer
A workspace can hold **multiple accounts per platform** on [the platforms that support it](/integrations/multiple-accounts#which-platforms-support-several-accounts) — several Google Ads logins, a handful of GA4 properties, more than one Search Console. Connect them all to the same workspace, and every surface sees them:
* **Chat** inside the platform can pull from and act on any connected account — just name the one you mean.
* **Reports** can cover a single account or draw on several at once.
* **Scheduled tasks** and the agent's background work run against your chosen default accounts.
* **Claude (MCP)** gets the same reach — one connector, all accounts in the workspace.
> **You:** Compare last week's spend across both of my Google Ads accounts.
> **You:** Pull top queries from the Search Console for my second site.
## How it works
* **Add accounts side by side.** Open **Integrations** in the left sidebar, click **View** on a platform, then **Add one more account**. Each account keeps its own property or ad-account selection.
* **Primary account.** One account per platform is the **primary** — the default used when you don't name one. Change it any time with the star.
* **Switch by naming.** Nothing is locked to the primary. Mention the account you mean in chat and the agent switches — no reconfiguration.
* **Agent default accounts.** Managing many accounts under one login? Pick which ones the agent works with by default, while the rest stay reachable by name.
The full walkthrough with screenshots is in [Connect Multiple Accounts](/integrations/multiple-accounts).
## One workspace or many?
The rule of thumb: **one workspace = one business.**
* Several accounts that belong to the **same business or brand** — multiple Google Ads logins, regional GA4 properties, a second Meta ad account — connect them all to **one workspace**. One place, everything in reach.
* **Different clients or separate businesses** — give each its **own workspace**. Every workspace keeps its own connections, team, settings, and data, so client accounts never mix, and you switch between them in seconds. See [Create a Workspace](/workspaces/create-workspace).
# Connect Meta Ads
Source: https://help.get-ryze.ai/integrations/meta-ads
Connect Meta Ads to Ryze for Facebook and Instagram performance questions and campaign management under your approval settings.
Connecting Meta Ads gives Ryze access to your Facebook and Instagram campaigns — performance, spend, and audiences.
## Requirements
* A Meta Business account with an ad account
* At least **Advertiser** access on the ad account; **Admin** to allow changes
* Access granted through Meta Business Manager rather than a personal profile, where possible
## Connect
Open **Integrations** in the left sidebar and find **Meta Ads** under **Advertising**.
You're redirected to Meta. Sign in and approve access — keep every requested permission checked.
There's no ad account to pick. Ryze sees every ad account that login can reach, and the card shows **Connected**. The agent can use it from your next message.
## Choose the accounts the agent uses by default
Click **View** on the card and use **Agent default accounts** to select the ad accounts the agent should work with first. It can still reach all the others — just name one in chat. See [Agent default accounts](/integrations/multiple-accounts#agent-default-accounts).
To connect another Meta login, click **View** → **Add one more account**.
## What you can ask
> How did my Meta campaigns perform last week compared to the week before?
> Which creatives have the best ROAS this month?
> Which ad sets are spending without conversions?
## What the agent can do
Campaign creation and adjustment, budget management, and [AI ad creatives](/paid-ads/ai-creatives).
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
Improvements the agent finds on its own go to your [Inbox](/agent/approvals) instead: nothing there changes until you approve. In Claude, approvals are set in Claude itself — set write and delete tools to **Needs approval** to be asked first (see [Permissions & approvals](/claude/permissions)).
To see what competitors are running on Meta, use [Competitor Ads](/paid-ads/competitors).
## Troubleshooting
**An ad account is missing.** The connected Meta user lacks access to it. Check assignments in Business Manager, or connect the right login with **Add one more account**.
**Card shows Reconnect needed.** Meta access expires more often than Google's, particularly after two-factor or Business Manager role changes. Click **Reconnect** and sign in again.
**Attribution disagrees with GA4 or Shopify.** Expected. Meta uses its own attribution windows and modelling. Track each consistently rather than reconciling exactly.
**Missing conversion data.** Usually a Pixel or Conversions API configuration issue on the Meta side.
## Related
* [Paid Ads introduction](/paid-ads/introduction)
* [Managed campaigns](/paid-ads/managed-campaigns)
* [Connect multiple accounts](/integrations/multiple-accounts)
# Connect Mixpanel
Source: https://help.get-ryze.ai/integrations/mixpanel
Connect a Mixpanel project with a service account so the agent can query events, funnels, retention, and saved reports.
Mixpanel connects with a **service account**. Once connected, the agent can query events, segmentation, funnels, retention, saved Insights reports, and JQL for one Mixpanel project.
## Step 1 — Create a service account
In Mixpanel, go to **Organization Settings → Service Accounts → Add Service Account**. Give it at least the **Analyst** role on the project you want to connect.
Copy the service account **username** and **secret**. The secret is shown only once.
Copy the **Project ID** from **Project Settings → Overview** (or the number after `/project/` in the Mixpanel URL), and check where the project stores data under **Project Settings → Data Residency**.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Mixpanel** card and fill in:
* **Service account username**
* **Service account secret**
* **Project ID** — numbers only, e.g. `3018123`
* **Data residency** — `us`, `eu`, or `in`, matching the project's data residency
Click **Continue**.
## Troubleshooting
* **"Project ID must be numeric"** — copy only the number, not the full URL.
* **Credentials rejected or no data** — check that the service account has a role on this project and that **Data residency** matches the project.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Multiple Accounts
Source: https://help.get-ryze.ai/integrations/multiple-accounts
Connect several accounts for the same platform, choose which one the agent uses by default, and decide when to use separate workspaces.
You can connect more than one account for the same platform in a single workspace — for example, two Google Ads logins or several GA4 accounts. Each account is kept separately, with its own property or ad-account selection, and you choose which one is **primary**.
## Which platforms support several accounts
You can connect several accounts to: Google Analytics 4, Google Search Console, Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads, Snapchat Ads, Reddit Ads, Pinterest Ads, OpenAI Ads, Thrad, Shopify, WordPress, HubSpot, HighLevel, Zoho CRM, AppsFlyer and Custom MCP Server.
Every other platform holds one connection per workspace. To switch to another account there, click **View** on the card, disconnect the current account with the trash icon, and connect again.
## What is the primary account?
When a platform has more than one connected account, one of them is the **primary**. The primary is the account the agent — in Ryze, Claude or ChatGPT — uses **by default** when you don't name a specific one. You can change it at any time, and you can still ask the agent to use any of the other accounts (see [Use a specific account](#use-a-specific-account)).
A platform with a single connected account doesn't need a primary — that account is always used.
## Add an account
Open **Integrations** in the left sidebar and click **View** on the connected platform's card.
Click **Add one more account** and authorize the other login (OAuth) or enter its credentials (API-key platforms). The new account is added alongside the existing ones — nothing is overwritten.
Choose the property or ad account for the new connection, then click **Save**. Each account keeps its own selection.
Use **Back** and **Next** to page through the connected accounts (for example, *1 of 2*).
## Set the primary account
Next to the account field is a **star**:
* A **filled** star marks the current primary.
* An **empty** star means that account isn't primary — click it to make it the primary.
Setting a new primary only changes the agent's default; it doesn't disconnect anything.
## Agent default accounts
For platforms where you manage many accounts — an agency running dozens of clients through one Google Search Console or Google Ads login — you can pick which accounts the **Ryze agent** works with by default. Open the platform's dialog and use **Agent default accounts** to select them.
**Agent default accounts** is available for Google Analytics 4, Google Search Console, Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads, Snapchat Ads, Reddit Ads and Pinterest Ads. Slack has **Default notification channels** instead — the channels where agent results and notifications go.
* When you don't name an account, the agent uses your defaults instead of guessing across everything it can see.
* All other accounts stay reachable — just name one in chat and the agent switches to it.
* Selecting all accounts (or none) means no filter: the agent considers everything.
This applies everywhere the agent works: platform chat, scheduled tasks, and MCP.
## Use a specific account
By default the agent uses the **primary** account. To work with another one, just ask — in Ryze, Claude or ChatGPT, no setup required:
> **You:** Show my connected Google Analytics accounts.
> **You:** Pull last week's spend for my other Google Ads account.
The agent lists the connected accounts and uses the one you point to. It sees a new account or a changed primary from your next message.
## One workspace or many?
The rule of thumb: **one workspace = one business.**
* Several accounts that belong to the **same business or brand** — multiple Google Ads logins, regional GA4 properties, a second Meta ad account — connect them all to **one workspace**. Chats, reports, scheduled tasks and the agent in Claude or ChatGPT can then work across all of them.
* **Different clients or separate businesses** — give each its **own workspace**. Every workspace keeps its own connections, team, settings and data, so client accounts never mix, and you switch between workspaces in seconds. See [Create a Workspace](/workspaces/create-workspace).
# Connect Omnisend
Source: https://help.get-ryze.ai/integrations/omnisend
Connect Omnisend with an API key so the agent can work with email and SMS campaigns, automations, segments, contacts, and reports.
Omnisend connects with an **API key**. Once connected, the agent can work with your email and SMS campaigns, automations, segments, contacts, and reports.
## Step 1 — Create an API key
In Omnisend, go to **Store settings → Integrations & API → API keys → Create API key**, and copy the key.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Omnisend** card, paste the key into **API key**, and click **Continue**.
## What the agent can do
* **Read** — campaigns, automations, segments and their statistics, contacts, and products
* **Change** — add or update contacts and tags, create a campaign draft and send it, and pull performance reports when you ask
* **Delete** — delete products, segments, campaigns or contact tags when you explicitly ask. Contacts themselves can't be deleted.
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
Omnisend allows **55 performance report requests per day**. Reports count as changes in Ryze, so with **Approve write & delete** on you're also asked to approve report requests.
## Troubleshooting
* **Key rejected** — copy the full key again, or create a new one in **API keys** and connect again.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect OpenAI Ads
Source: https://help.get-ryze.ai/integrations/openai
Connect OpenAI Ads with an API key.
OpenAI Ads connects with an **API key** you generate in the OpenAI Ads dashboard.
## Step 1 — Get your API key
Go to [ads.openai.com](https://ads.openai.com/) and sign in (or sign up) to the Ads Manager.
In the Ads Manager, open **Settings** from the left menu.
Under **Settings → General → Account Info**, click **Create New Key**. Give it a name like `Ryze`, then click **Create**. Copy the key — you'll need it next.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **OpenAI Ads** card, paste your API key (it starts with `sk-svcacct-`) into **API key**, and click **Continue**.
To add another OpenAI Ads account, click **View** → **Add one more account**.
## Troubleshooting
* **"That is not an OpenAI Ads API key. The key starts with sk-svcacct-…"** — the value doesn't look like an API key at all. Copy the whole key from [ads.openai.com](https://ads.openai.com/).
* **"OpenAI Ads rejected this API key. Generate a new key in the OpenAI Ads dashboard and paste the whole value."** — OpenAI Ads doesn't accept this key. Usually it's a regular OpenAI platform key (`sk-proj-…`). Create the key in the OpenAI Ads dashboard (**Settings → General → Account Info**) and paste the whole value.
Need help? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Integrations overview
Source: https://help.get-ryze.ai/integrations/overview
Connect Google, Meta, your store or CMS, analytics and more so Ryze can read your data and publish for you.
Prefer video? Watch the [Publishing to your site guide](/guides/publishing).
Connect your platforms in Ryze so the agent can read your data and act on it — in Ryze, and in Claude or ChatGPT if you've connected them. Most platforms are connected on the **Integrations** page; you can also connect many of them from Claude or ChatGPT with a link (see [below](#connect-from-claude-or-chatgpt-with-a-link)).
Ryze supports **50+ integrations**. They're grouped into seven categories, matching the filters on the Integrations page:
* **AI** — Anthropic, Claude MCP, ChatGPT MCP, Grok Bot, Custom MCP Server
* **Analytics** — Google Analytics 4, Google Search Console, AppsFlyer, Adjust, Ahrefs, Semrush, Mixpanel, Amplitude, PostHog, CallRail, Microsoft Clarity
* **Commerce & CMS** — Shopify, WordPress, Framer, GitHub, HubSpot, Wix, Ryze Hosting, Ghost, Lightspeed eCom, Webflow, Magento, HighLevel, Directus, Custom Webhook, WooCommerce, Duda, Squarespace, Lovable, GoDaddy Airo, Base44, Replit, BigCommerce, Contentful, Sanity
* **CRM** — Zoho CRM, ClickUp
* **Advertising** — Google Ads, Meta Ads, LinkedIn Ads, OpenAI Ads, Thrad, Microsoft Ads, Snapchat Ads, TikTok Ads, Reddit Ads, Pinterest Ads, Criteo, StackAdapt
* **Messaging** — Klaviyo, Slack, Mailchimp, Instantly, Omnisend
* **Files** — Google Drive
## Open Integrations
Open **Integrations** in the left sidebar. Use the **Search integrations** box or the filters to find any platform:
* **All** — every platform.
* **Connected** — only what this workspace has already connected, including the Claude, ChatGPT and Grok connectors. Handy to check what's connected or to disconnect something. If nothing is connected yet, it shows *No integrations connected yet*.
* **AI**, **Analytics**, **Commerce & CMS**, **CRM**, **Advertising**, **Messaging**, **Files** — the categories listed above.
## Connect a platform
Find the platform's card and click **Connect**.
For Google, Meta, and other sign-in platforms, you're redirected to that platform to sign in and approve access. For platforms that use an API key or token (like Framer or Duda), you paste your credentials and click **Continue**.
Some platforms need one more choice after connecting — for example, the **Site** for Search Console or the **Property** for Google Analytics. The window opens on its own; pick the option and click **Save**. Until then the card shows **Require setup**.
The card then shows a **Connected** badge. In Ryze, the agent can use the new connection from your next message — there's no need to start a new chat.
## Connect from Claude or ChatGPT with a link
You can also ask Ryze in Claude or ChatGPT to connect a platform. The agent sends you a one-time link:
1. Open the link. Sign in to the platform, or paste its API key on the page. Where the page shows **Where do I find these?**, it opens that platform's setup guide.
2. If asked, pick the accounts Ryze should use.
3. When the page says the platform is connected (for example, *Google Ads is connected*), close the tab and go back to your chat.
In Claude or ChatGPT, start a new chat to use the new platform. If its tools still don't appear, refresh the Ryze connector — see the [Claude FAQ](/claude/faq) or [Connect Ryze to ChatGPT](/chatgpt/connect#connected-a-new-platform-after-installing).
A link works once and for 24 hours. If the page says *This connection link has expired or was already used*, ask the agent for a new one.
Some platforms can only be connected in the Ryze app — including Ryze Hosting, GitHub, Custom MCP Server, and the Claude, ChatGPT and Grok connectors.
## Manage a connected platform
Click **View** on a connected card to:
* change the site, property, or other selection, then click **Save**;
* choose **Agent default accounts** — the accounts the agent uses first on platforms like Google Ads and Meta Ads;
* connect another login with **Add one more account**, where the platform supports it — see [Connect multiple accounts](/integrations/multiple-accounts);
* disconnect the account with the trash icon.
## Reconnect a platform
If a card shows **Reconnect needed** and has a **Reconnect** button, click it and sign in again.
If the platform still has another working account, the card shows **View** instead. Click **View** — it opens on the broken account — and click **Reconnect** there.
## Don't see your platform?
Search for it first. If nothing matches, click **Request an integration** and tell us what you need.
If you want to publish articles to a site Ryze doesn't connect to yet, you still have options:
* **Ryze Hosting** — Ryze hosts your blog on a free Ryze subdomain right away, or on your own subdomain such as `blog.yoursite.com` after you add one DNS record. No CMS needed. See [Ryze Hosting](/integrations/ryze-hosting).
* **Custom-coded site** (Next.js, Vercel, Netlify, Hugo and similar) — publish articles as files committed to your repository with [GitHub](/integrations/github), or have your developer receive each article through a [Custom Webhook](/integrations/custom-webhook).
* **Someone else builds your site** — invite them to your workspace (**Workspace Settings → Team** — see [Invite teammates](/workspaces/invite-teammates)) or send them this page.
* **Weebly, Square Online, Pixieset, Google Sites and similar** — there's no publishing connection for these yet. Use Ryze Hosting for the blog and link to it from your site's menu.
## Platform setup guides
### Advertising
Connect with your Google login.
Connect Facebook and Instagram ads.
LinkedIn, Microsoft, TikTok, Snapchat, Reddit, and Pinterest Ads.
Connect OpenAI Ads with an API key.
Connect Thrad with an API key.
Connect Criteo Marketing Solutions.
Connect StackAdapt programmatic.
### Analytics
Queries, impressions, clicks, indexation.
Traffic, landing pages, conversions.
Connect your own Ahrefs API key.
Connect your own Semrush API key.
Product analytics with a personal API key.
Product analytics with a service account.
Product analytics with project keys.
Behavior analytics with a Data Export token.
Calls, transcripts, and tracking numbers.
Mobile attribution with a Pull API token.
Mobile attribution with an API token.
### Commerce & CMS
One-click Shopify app, or a custom app.
Connect with an application password.
Store data with a REST API key.
Publish into a CMS collection with a site token.
Connect with a project URL and API key.
Auto-publish to your Wix blog.
Publish to your Duda site with API credentials.
Publish to your BigCommerce blog with an API account.
Publish entries with a personal access token.
Publish documents to your Sanity dataset with an API token.
Publish into a Directus collection.
Publish articles as files committed to your repo.
Publish to Ghost with an Admin API key.
Publish to your Squarespace blog with a login.
Publish to a site built with Lovable.
Publish to a site built with GoDaddy Airo.
Publish to an app built with Base44.
Publish to an app built with Replit.
Connect HubSpot CRM and CMS with OAuth.
Publish to a HighLevel blog with a private token.
Publish to your Lightspeed store blog.
Products, categories and CMS pages via access token.
Publish to any CMS via your own endpoint.
Host your blog on a free Ryze subdomain or your own domain.
### CRM, Messaging & Files
Read and edit CRM records with OAuth.
Tasks, lists, and docs with a personal API token.
Ask the agent inside Slack.
Connect Klaviyo with a private API key.
Audiences, campaigns and reports via API key.
Email and SMS marketing with an API key.
Cold email campaigns with a v2 API key.
Hand the agent Sheets, Docs and files you pick.
### AI
Add Ryze to Claude as a connector.
Add Ryze to ChatGPT as a connector.
Use Ryze inside Grok Bot.
Let the agent use tools from your own MCP server.
Run chat on your own Anthropic API key.
# Connect PostHog
Source: https://help.get-ryze.ai/integrations/posthog
Connect PostHog with a personal API key so Ryze can read product analytics — events, insights, funnels, and HogQL queries — and manage insights, dashboards, feature flags, and cohorts.
PostHog connects with a **personal API key**. Once connected, the agent can read events, insights, and funnels, and run HogQL queries against the project you pick — putting product analytics next to your ads and SEO data in one answer. It can also make changes when you ask — see [What the agent can do](#what-the-agent-can-do).
## Step 1 — Create a personal API key
In PostHog, go to **Settings → Personal API keys** and click **Create key**.
Grant read access to the projects you want, including the **Query** and **Insight** scopes. Read access is enough for reporting; add write access to the scopes the agent should change (for example insights or feature flags). Copy the key — it starts with `phx_`.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **PostHog** card and fill in:
* **Personal API key** — the `phx_` key
* **Host** — `https://us.posthog.com` for US Cloud, `https://eu.posthog.com` for EU Cloud, or your self-hosted URL
Click **Continue**, then pick the **Project** and click **Save**. The card shows **Connected** — click **View** to see the project name and change the **Project** later.
## What the agent can do
* **Read** — events, insights, funnels, dashboards, feature flags, cohorts and persons, plus HogQL queries
* **Change** — create or edit insights, dashboards, feature flags and cohorts when you ask
* **Delete** — remove those objects when you explicitly ask
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
To keep the agent read-only, give the personal API key read scopes only — PostHog then rejects any change.
## Troubleshooting
* **Key rejected** — check the host matches where your account lives (US vs EU), and that the key has the Query and Insight scopes.
* **Project missing** — the key has no read access to that project. Edit the key's project access in PostHog and reconnect.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Replit
Source: https://help.get-ryze.ai/integrations/replit
Publish articles to an app built with Replit. Ryze signs in, asks Replit Agent to add the article files and clicks Republish.
Replit has no publishing API. To publish, Ryze signs in to Replit with the login you give it, asks Replit Agent to add the article files to your app, and clicks **Republish**, the way you would. Your login and password are stored encrypted.
This works for apps built and published with Replit, on a `.replit.app` address or your own domain.
**Republish deploys the whole app.** Any changes you made in Replit but haven't published yet go live with the next article.
## Before you connect
* **An email and password login.** Google, GitHub, X, Apple, Facebook and SSO sign-in don't work. If you sign in one of those ways, invite a second Replit account that has a password to the app and connect with that one.
* **Two-factor authentication off** for that login. If Replit asks for a verification code, the connection is refused.
* **Replit Agent credits.** Connecting, each publish batch and each unpublish send a prompt to Replit Agent, and prompts spend your Agent credits.
* **Plan mode off** in the Agent chat. Ryze's prompts ask Agent to change files in the app.
Replit's free plan can publish, but free deployments expire after 30 days. To keep the site and its articles live, use a paid Replit plan.
## Connect in Ryze
Open the app in the Replit workspace and copy the link from the browser address bar. It looks like `https://replit.com/@you/YourApp`, or for a team app `https://replit.com/t/your-team/repls/YourApp`. Don't use the address of your live site.
On the **Integrations** page, click **Connect** on the Replit card.
* **Project URL** — the link you copied
* **Replit email or username** — your Replit login
* **Password** — the password for that login
The dialog shows each step as it happens: **Logging in to Replit**, **Checking your Replit plan and credits**, **Replit is setting up your blog**, then **Saving the connection**. In our test the first setup took about 8 minutes.
### What the setup prompt does
During connect, Ryze sends Replit Agent one prompt that sets up the blog:
* Articles become JSON files in `content/articles/`, one file per article.
* `/blogs` lists every article, newest first.
* `/blogs/{slug}` shows one article, with its title, meta description, cover image and body in the HTML the server returns.
* Every article is added to your `sitemap.xml`, and `robots.txt` points to the sitemap.
* If your site already has a blog, Agent rewires that blog to read these files and keeps its design. Otherwise it adds a **Blog** link to the main navigation and styles the pages like the rest of your site.
The prompt asks Agent not to change anything else in the app. **Every reconnect sends this prompt again.**
## How publishing works
Articles go out in the daily publishing window, in batches of up to 5 articles per site. For each batch Ryze:
1. Attaches the article files and sends **one** prompt asking Replit Agent to copy them into `content/articles/`. Agent copies the files as they are and never rewrites the text.
2. Clicks **Republish**. A republish takes about a minute or two.
3. Opens each article on your live site to check that it's there.
Each article lives at your published site's address plus `/blogs/{slug}`. If your app has a custom domain in Replit, Ryze uses it. Otherwise it uses the `.replit.app` address.
## When Replit Agent is busy with your own prompt
Before it sends anything, Ryze checks whether Replit Agent is working on one of your prompts. If it is, Ryze leaves the app alone:
* **Scheduled publishing** skips the app and publishes the article on the next nightly run.
* **Publish, Republish or Unpublish from the article page** stops with "Replit Agent is working on one of your prompts right now. Try again in a few minutes."
## Republish and unpublish
* **Republish** replaces the article file in place.
* **Unpublish** sends one prompt that deletes the article file, then clicks **Republish**.
## Troubleshooting
| Message | What to do |
| - | - |
| The builder rejected this login and password | Check the email or username and the password, then connect again. |
| The builder's login page did not show the field Ryze expected | Your account signs in with Google, GitHub or another provider. Invite a Replit account with an email and password to the app and connect with that one. |
| The builder asked for a verification code on login | Turn off two-factor authentication for this login, or use a collaborator login without it, then connect again. |
| Enter the project address | Copy the link from the Replit workspace address bar (`replit.com/@you/YourApp`, or `replit.com/t/your-team/repls/YourApp` for a team app), not your live site's address. |
| This login has no access to that project | Check the project link, or log in with the app owner's account. |
| Replit is out of Agent credits for this account | Add credits, or wait for the monthly credits in Replit. |
| This Replit plan cannot publish the app | Upgrade the Replit plan, or unpublish another app if you're on the free plan. |
| Replit could not publish the app because its build or deployment failed | Open the app in Replit and fix the publish error. |
| Replit Agent is working on one of your prompts right now | Let your prompt finish, then try again. Scheduled publishing retries on its own. |
| The builder did not finish the request in time | Check that Plan mode is off in the Agent chat, then try again in a few minutes. |
| The builder's Publish did not finish in time | Try again in a few minutes. Scheduled publishing retries on its own. |
| The published site does not show the article yet | Try again in a few minutes. Scheduled publishing retries on its own. |
| Another publish for this project is still running | Wait a few minutes for it to finish. |
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Ryze Hosting
Source: https://help.get-ryze.ai/integrations/ryze-hosting
Publish your Ryze blog without a CMS — on a free Ryze subdomain with no setup, or on a domain you own with one DNS record.
Prefer video? Watch the [Blog Studio guide](/guides/blog-studio).
Ryze Hosting is a publishing destination for sites without a CMS. Ryze hosts your blog — on a free Ryze subdomain such as `your-brand.byryze.com`, or on a domain you own, like `blog.example.com`. Articles then publish straight to your blog, with HTTPS handled for you.
Your site runs on a platform Ryze doesn't connect to? Host the blog here and link to it from your site — see [Don't see your platform?](/integrations/overview#dont-see-your-platform).
## Step 1 — Choose where your blog lives
On the **Integrations** page, click **Connect** on the **Ryze Hosting** card. Ryze asks you to *Choose where your hosted blog lives*:
* **Free Ryze subdomain** — `your-brand.byryze.com`. Type a name (letters, numbers and dashes; Ryze suggests one from your organization name) and click **Connect domain**. The blog goes live in about a minute, with no DNS setup. You're done — skip Steps 2 and 3.
* **Your own domain** — enter the domain and click **Connect domain**, then follow Steps 2 and 3:
* **A subdomain** (recommended) — e.g. `blog.example.com`, keeping your main site untouched.
* **Your root domain** — e.g. `example.com`, if the whole domain is for the blog.
You can start on the free subdomain and move to your own domain later: click **View** on the **Ryze Hosting** card, then **Connect custom domain**.
## Step 2 — Add the DNS record
Ryze shows the exact record to add at your domain provider. Which one depends on what you entered:
| Domain type | Record | Name | Value |
| - | - | - | - |
| Subdomain (`blog.example.com`) | **CNAME** | `blog` | `cname.vercel-dns.com` |
| Root domain (`example.com`) | **A** | `@` | `76.76.21.21` |
If Ryze also shows a **verification** record (a `TXT` or extra `CNAME`), add that one too — it's needed when the domain is already used elsewhere.
Ryze detects your DNS provider — Cloudflare, GoDaddy, Namecheap, Route 53, Vercel, Google Domains, DigitalOcean, Name.com, DNSimple, or Porkbun:
* For some providers Ryze shows a **Set up automatically in …** button with your provider's name (for example, **Set up automatically in Cloudflare**). Click it, sign in to your provider and approve the change — Ryze verifies the record on its own.
* Otherwise click **Open … DNS settings** (for example, **Open GoDaddy DNS settings**) and add the record yourself.
On **Cloudflare**, set the record to **DNS only** (grey cloud), not proxied (orange cloud). A proxied record breaks verification.
## Step 3 — Verify
Back in Ryze, click **Verify**. Ryze checks your DNS and verifies the domain once the record resolves — usually a few minutes, up to about an hour for DNS to propagate. It keeps re-checking on its own, so you can close the dialog and come back.
Once verified, HTTPS is issued automatically and your blog is live at your domain.
## Change or remove the domain
Click **View** on the **Ryze Hosting** card, then **Remove domain**:
* If the blog was on your own domain, it moves back to a free Ryze subdomain and article links update automatically. You can connect a custom domain again any time.
* If the blog was on the free subdomain, it goes offline immediately — published article links stop working.
## Publishing to it
With Ryze Hosting connected, it works like any other publishing destination — programmatic articles publish to your hosted blog on schedule. See [Programmatic Articles](/seo/programmatic).
## Keeping the hosted blog out of Google
If you publish the same articles to your own CMS as well, the hosted copy can compete with your site for the same searches. You can switch the hosted copy off search entirely: in **Blog Studio → SEO**, under **Keep this blog out of Google**, turn on **Hide this blog from search engines**.
When it's on, three things change together so nothing contradicts: the blog's `robots.txt` disallows crawling, the sitemap lists no articles, and every hosted page (index and articles) carries a `noindex, nofollow` tag. The SEO panel notes that the blog is hidden while the toggle is on. Switch it off to let search engines index the hosted blog again.
This only affects the Ryze-hosted copy — articles published to your own CMS are not touched. Hosted blogs on the default `*.byryze.com` address also don't take part in the [Backlink Exchange](/seo/backlink-exchange); a custom domain connected here does.
## Troubleshooting
* **Not verifying** — DNS can take up to an hour. Confirm the record type matches your domain (CNAME for a subdomain, A for a root), and that the name and value are exact.
* **Cloudflare stuck** — the record must be **DNS only** (grey cloud). Switch off the proxy and check again.
* **Verification record ignored** — if Ryze showed a second (verification) record, both records must be present.
* **"This subdomain is reserved. Pick another name."** — that name can't be used. Type a different one.
* **"This domain is already connected to another workspace"** — the domain is in use in another Ryze workspace. Remove it there first (**View** → **Remove domain**), or use a different domain.
* **"Use letters, numbers and dashes only"** — the subdomain name has other characters. Remove spaces, dots and symbols.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Sanity
Source: https://help.get-ryze.ai/integrations/sanity
Connect your Sanity project with an Editor API token so Ryze can publish articles as documents in your dataset.
Sanity connects with an **API token** that has Editor permissions. This is for sites whose content lives in Sanity and whose front end (Next.js, Astro or similar) is your own. Once connected, programmatic articles publish as documents of the type your blog posts already use.
## Step 1 — Create an API token in Sanity
Go to [sanity.io/manage](https://www.sanity.io/manage) and open your project. Copy the **Project ID** shown there. It's also in your `sanity.config.ts`.
Open **API → Tokens**, click **Add API token**, give it a name like `Ryze`, choose **Editor** permissions, and copy the token.
Use a token with **Editor** permissions. A read-only (Viewer) token can't publish, and Ryze rejects it when you connect.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Sanity** card and fill in:
* **Project ID** — the ID you copied, e.g. `abc123de`
* **API token** — the Editor token you created
* **Dataset** (optional) — leave empty to use `production`
* **Blog URL** — the public URL your site serves posts under. A post with the slug `my-post` must live at `{Blog URL}/my-post`, e.g. `https://yoursite.com/blog/my-post`
Click **Continue**, then pick the **Document type** your blog posts use.
The dataset needs at least one **published** post of that type. Ryze reads your newest posts to learn their fields: title, slug, body (Portable Text, markdown or HTML), excerpt, SEO title and description, publish date and main image. If every recent post has an author and a category, Ryze copies those references from the newest post.
If none of your recent posts has a main image, Ryze looks for the image field in your deployed Studio schema and uses it for the cover. Deploy your schema (`sanity schema deploy`, or deploy Studio) so Ryze can find it — otherwise articles publish without a cover image.
## How publishing works
* Each article becomes a **published** document, not a draft. Its images are uploaded as Sanity assets.
* On **republish**, Ryze updates its own document and keeps any fields it doesn't manage. If someone left an unpublished Studio draft of a Ryze article, it's discarded.
* **Unpublish** deletes Ryze's document and its draft.
* Edits you make to a Ryze article in Studio are replaced the next time Ryze republishes it. Change the article in Ryze instead.
* Articles can contain images in the body. Make sure your body field allows images (add `{type: 'image'}` to the body array in your schema), otherwise Studio shows them as unknown blocks.
* Ryze never edits or deletes posts it didn't create. If one of your posts already uses the same slug, publishing stops and asks you to rename the article slug.
Your site has to show new documents of that type. Most front ends pick them up on their own. If your site is a static build, set up a rebuild (for example, a Sanity webhook to your host) so new articles go live.
## Troubleshooting
* **Token rejected** — check that the Project ID matches the one on sanity.io/manage, and that the token belongs to that project.
* **Token can read but cannot write** — the token has Viewer permissions. Create a new one with **Editor** permissions and connect again.
* **No such project or dataset** — copy the Project ID from sanity.io/manage and check the dataset name (most projects use `production`).
* **No document types to pick** — the dataset has no published documents yet. Publish at least one blog post in Sanity Studio, then pick its type.
* **Sanity publish not configured** — make sure at least one published post of the chosen type has a slug and a body.
* **A document with this slug already exists** — one of your own posts uses that slug. Rename the article slug in Ryze, or remove that document in Sanity.
* **Articles publish without a cover image** — none of your recent posts has a main image and Ryze can't find an image field in your deployed schema. Deploy your Studio schema (`sanity schema deploy`), or add a main image to one published post.
* **Article published but 404 on the site** — check the Blog URL matches where your site serves posts, and rebuild the site if it's static.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Semrush
Source: https://help.get-ryze.ai/integrations/semrush
Connect your own Semrush API key so Ryze can pull domain and keyword analytics, backlinks, and referring-domain data.
Semrush connects with your **own API key**. Ryze uses it for domain and keyword analytics, backlinks, and referring-domain data via the Semrush Analytics API — and it runs on your own Semrush API-unit balance, not Ryze credits.
This requires a **Semrush plan with API access**. Usage is billed against your own API-unit balance.
## Step 1 — Find your API key
In Semrush, open the **Subscription info** page and go to the **API units** tab. Your API key is listed there, along with how many API units you have left.
Your API key gives access to your API-unit balance — don't share it publicly.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the Semrush card, paste your key into the **API key** field, and click **Continue**.
## Troubleshooting
* **Key rejected** — confirm your Semrush plan includes API access and that you copied the full key from the **API units** tab.
* **Running out of units** — usage draws on your Semrush API-unit balance; the **API units** tab shows what's left.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Shopify
Source: https://help.get-ryze.ai/integrations/shopify
Connect your Shopify store with just the store domain, pick the blog articles publish to, and add more stores.
Connecting Shopify takes under a minute and needs only your store domain.
## The connect window
When you click **Connect** on the Shopify card, the window has two tabs:
* **Shopify app** (default) — enter your store domain and approve Ryze in your Shopify admin. No API keys to copy. The steps below cover this tab.
* **Custom app** — your store domain plus the **Client ID** and **Client secret** of an app you create in your store. See [Shopify Custom App](/integrations/shopify-custom-app).
## Connect with the Shopify app
In Ryze, go to **Integrations** and click **Connect** on the **Shopify** card.
On the **Shopify app** tab, type your `.myshopify.com` domain (e.g. `yourstore.myshopify.com`) and click **Continue**.
You're redirected to your Shopify admin in the same tab. Approve the access prompt, and you come back to Ryze with the store connected.
That's it — no app creation, no API keys, no credentials to copy.
## After connecting
Click **View** on the Shopify card to optionally choose:
* **Blog** — the existing Shopify blog your articles publish to;
* **Article template** — the theme article template published articles use, or **Theme default**.
Click **Save**. Both choices are optional.
## Several stores
Each store is its own connection. To add another one, click **View** → **Add one more account** and connect the next store. See [Connect multiple accounts](/integrations/multiple-accounts).
## When you need a custom app
The standard Shopify app lets the agent edit product, collection, page and blog content and SEO fields. Theme file edits (for example `robots.txt`, structured data snippets or code in `theme.liquid`) and URL redirects need your own custom app — see [How do I connect Shopify?](/integrations/faq) in the Integrations FAQ and [Shopify Custom App](/integrations/shopify-custom-app).
## Troubleshooting
* **"Must be a valid yourstore.myshopify.com domain"** — enter only the `.myshopify.com` domain, not your custom domain or a URL with a path.
* **"This Shopify store is already connected to another Ryze workspace. Shopify keeps one live connection per store — disconnect it there first, then retry."** — open the other workspace → **Integrations** → Shopify, disconnect the store, then connect it here.
* **"The Shopify install took too long to come back. Open the link again to retry."** — open **Integrations** and click **Connect** on the Shopify card again.
More fixes: [Shopify not connecting](/troubleshooting/shopify-not-connecting). If it still fails, email [support@get-ryze.ai](mailto:support@get-ryze.ai) with your store domain.
# Connect Shopify Custom App
Source: https://help.get-ryze.ai/integrations/shopify-custom-app
Connect Shopify through your own custom app — full control over permissions, credentials, and revocation.
The default [Shopify connection](/integrations/shopify) needs only your store domain and one approval click — Ryze requests a standard set of permissions for you. A **custom app** is the alternative for teams that want to stay in control:
* You define exactly which Admin API scopes Ryze gets — nothing more.
* You can rotate the credentials or revoke access any time from your Shopify admin.
* Access runs through an app your team owns, not a third-party install.
If our defaults work for you, the default connection is faster. Otherwise, follow the steps below: create the app, configure it, copy the credentials, connect.
## Step 1 — Create a custom app in Shopify
In your Shopify admin, go to **Settings**, then open **Apps and sales channels**.
In the top-right corner, click **Develop apps**.
Click **Build apps in Dev Dashboard**.
Click **Create app**.
Under **Start from Dev Dashboard**, enter a name (e.g. `Ryze AI`) and click **Create**.
## Step 2 — Configure the app
Under **URLs → App URL**, enter `https://reports.get-ryze.ai` and **uncheck Embed app in Shopify admin**. Ryze runs as a standalone app and will not load inside the Shopify admin frame; with the box checked, opening the app from Shopify shows a blank page.
Under **Access → Scopes**, paste this comma-separated list — or trim it to just the features you plan to use. Missing scopes won't block the connection, but the related features will fail later (for example, without `write_content` Ryze can't publish articles to your blog). You can always add scopes later in the same screen — but scopes added later only take effect after you **Release** a new version and **Install/approve** it on your store (Steps below), then reconnect once in Ryze.
```
read_analytics,read_content,read_metaobjects,read_orders,read_products,read_publications,read_reports,read_themes,write_content,write_metaobjects,write_products,write_publications,write_themes
```
A custom app can also grant scopes our default connection never requests. Add these only if you need them: `read_markets,write_markets` for market and domain settings, and `write_online_store_navigation` for URL redirects. Proposals that depend on these stay **Blocked** on the default connection, because those scopes are not part of the standard Ryze app.
Under **Redirect URLs**, enter `https://reports.get-ryze.ai/api/auth/shopify/callback`.
Click **Release**, confirm in the dialog, and release the version. This activates the app.
Open the app and click **Install app** (top-right). This installs the app on your store so Ryze can fetch an access token.
Don't skip this step. Without installing the app, the connection fails with `app_not_installed` and Ryze can't authenticate — even though your Client ID and Secret are correct.
## Step 3 — Copy your credentials
In the app, open **Settings**. Copy the **Client ID**, then reveal and copy the **Secret** (this is your Client secret).
Back in your Shopify admin, open **Settings → Domains**. Your store domain is the `.myshopify.com` address marked **Primary**.
## Step 4 — Connect in Ryze
On the **Integrations** page, click **Connect** on the Shopify card and switch to the **Custom app** tab, then fill in:
* **Store domain** — e.g. `yourstore.myshopify.com`
* **Client ID** — the Client ID you copied
* **Client secret** — the Secret you copied
Click **Continue**. Ryze verifies the credentials against your store immediately — if something's wrong, you'll know right away. Tokens refresh automatically using your app's credentials, no maintenance needed.
To revoke access later, uninstall the app in your Shopify admin. To rotate the secret, generate a new one under **Credentials** and reconnect in Ryze.
Need help? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Slack
Source: https://help.get-ryze.ai/integrations/slack
Add Ryze to your Slack workspace and ask the agent about your marketing — ads, spend, traffic, revenue — without leaving Slack, and get agent results in the channels you choose.
Slack connects with **OAuth** — you add the Ryze app to your Slack workspace and approve its permissions. After that, you talk to the agent right in Slack: mention it in a channel or send it a direct message, and it answers in a thread with the same tools and data it has in Ryze.
## Connect in Ryze
Open **Integrations** in the left sidebar and find the **Slack** card (under **Messaging**).
You're sent to Slack. Pick the Slack workspace to install Ryze into and click **Allow**.
The card shows **Connected**. Click **View** to see the Slack workspace name. One Slack workspace is tied to one Ryze workspace, so the agent answers from that workspace's connected accounts.
## Using the agent in Slack
* **Mention it in a channel** — `@Ryze AI how did Meta spend compare to last week?` The agent replies in a thread under your message; keep asking in that thread and it keeps the context.
* **Direct message it** — open a DM with Ryze and ask there; every DM is handled, no mention needed.
* **Attach images** — drop up to three screenshots (JPG, PNG, WebP or GIF, up to 10 MB each) into your message and the agent reads them. Other file types, including PDFs, aren't read yet — paste the text into the message instead.
Invite the Ryze app to a channel before mentioning it there. For private channels, the app has to be added by a member.
## Choose where notifications go
Results of [scheduled tasks](/agent/schedules) and other agent notifications can be posted to Slack channels.
Click **View** on the Slack card.
Under **Default notification channels**, search for the channels, tick them, and click **Save**.
Scheduled tasks post their results to these channels unless a task has its own **Slack channels** set. The same channels are pre-filled when you choose who hears about new approvals — see [Get notified](/agent/approvals#get-notified).
If no channel is selected, the field reads **All channels**, but nothing is posted to Slack by default. Pick at least one channel to get results there. Invite the Ryze app to a channel first — private channels appear in the list only after the app is added.
## Troubleshooting
* **No reply to a channel message** — you didn't mention `@Ryze AI`, or the app isn't in that channel yet. Mention it, or DM it.
* **"Not in channel"** — invite the **Ryze AI** app to the channel (`/invite @Ryze AI`) and try again.
* **Reconnect needed** — the Slack app was removed or the install was revoked. Click **Reconnect** on the card.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Squarespace
Source: https://help.get-ryze.ai/integrations/squarespace
Connect your Squarespace site with a login so Ryze can publish articles to your blog.
Squarespace has no blog API. To publish, Ryze signs in to your site with the login you give it and adds each article in the blog editor, the way a person would. Your login and password are stored encrypted.
## Before you connect
* **An email and password login.** Use the account of the site owner or a contributor with **Content Editor** access.
* **Two-factor authentication off** for that login. If Squarespace asks for a verification code, the connection is refused. A contributor account without two-factor authentication works.
* **A blog on the site.** If there isn't one yet, add a Blog page in Squarespace (**Pages → + → Blog**).
## Connect in Ryze
On the **Integrations** page, click **Connect** on the Squarespace card.
* **Site URL** — your site address, the `squarespace.com` one or your own domain, e.g. `https://yoursite.squarespace.com`
* **Squarespace email** — the owner or contributor login
* **Squarespace password** — the password for that login
The dialog shows each step as it happens: **Logging in to Squarespace**, **Finding your Squarespace site and blogs**, then **Saving the connection**.
If the site has one blog, Ryze picks it. If it has several, open the Squarespace integration settings and choose one in the **Blog** picker. Nothing publishes until a blog is selected.
## How publishing works
Articles go out in the daily publishing window that starts at 20:00 UTC. Ryze opens one browser session per site and publishes up to 5 articles in it, one after another. For each article it:
1. Creates a draft with the article's title and slug.
2. Pastes the body into the editor.
3. Uploads the featured image and places body images as image blocks.
4. Saves the excerpt, SEO title and meta description, then publishes the post.
The post lives at your blog's address plus the article slug.
If the featured image or a body image fails to upload, the article still publishes. It gets a warning in your articles list that says which images were skipped.
Publishing is safe to repeat. Ryze finds its own post by slug, so a retry never creates a second copy. It never overwrites a post it didn't create.
## Republish and unpublish
* **Republish** replaces the post in place in one session.
* **Unpublish** deletes the post from your Squarespace blog.
## Troubleshooting
| Message | What to do |
| - | - |
| Squarespace rejected this email and password | Check the login and password, then connect again. |
| Enter the site address as [https://yoursite.squarespace.com](https://yoursite.squarespace.com) or your custom domain | Type the full address with `https://` and a domain, e.g. `https://www.example.com`. |
| Squarespace answers "No Such Website" for that address | Use the address from **Squarespace → Settings → Domains**. The built-in `.squarespace.com` address works even without a custom domain. |
| … answered as an ordinary web page, not as a Squarespace site | The address isn't a Squarespace site. Use the site URL from **Squarespace → Settings → Domains**. |
| … showed a page instead of its site data | The site has a site-wide password, is an unpublished trial site, or has a visitor check. Remove the password or publish the site, then connect again. |
| Squarespace's login page did not show the field Ryze expected | This account signs in with Google or Apple. Use a login that signs in with an email and password. |
| Squarespace asked for a verification code on login | Turn off two-factor authentication for this account, or use a contributor account without it, then connect again. |
| Squarespace login did not finish | Check the login and password, then connect again. |
| This Squarespace account cannot edit the site | Use the site URL from **Squarespace → Website** and an owner or contributor login with Content Editor access. |
| Squarespace blog not selected | Pick a blog in the Squarespace integration settings. |
| The Squarespace blog selected for publishing no longer exists | Pick another blog in the Squarespace integration settings. |
| The Squarespace blog already has a post at "…" that Ryze did not create | Rename the article slug, or remove that post in Squarespace. |
| The Squarespace blog already has a draft at "…" that Ryze does not recognise | Delete that draft in Squarespace (or rename the article slug), then publish again. |
| Squarespace refused to save the new post / saved the post at a different address | Change the article slug to letters, digits and hyphens, then publish again. |
| Another Squarespace publish for this site is still running | Wait a few minutes. Scheduled publishing goes through once the other publish finishes. |
| The Squarespace blog editor did not open | Try publishing again in a few minutes. |
| Featured image skipped | The article published without a cover image. Republish it later. |
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect StackAdapt
Source: https://help.get-ryze.ai/integrations/stackadapt
Connect your StackAdapt API token so Ryze can manage your programmatic campaigns and pull delivery reporting.
StackAdapt connects with your **own API token**. Ryze uses it to read advertisers, campaigns, and delivery stats, and to create and manage campaigns, campaign groups, and ads via the StackAdapt GraphQL API.
StackAdapt issues API tokens **per account, on request** — there is no self-serve token page. The token carries your account's permissions, so Ryze can only touch what your StackAdapt seat can.
## Step 1 — Request an API token
Ask your StackAdapt account manager (or [support](https://support.stackadapt.com)) for a **GraphQL API token** for your account.
StackAdapt sends the token directly. Store it somewhere safe — treat it like a password.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the StackAdapt card, paste the token into the **API token** field, and click **Continue**. Ryze validates the token against your account before saving, and the card shows **Connected**. Click **View** to see what's connected — the account email.
## Troubleshooting
* **Token rejected** — confirm you received a GraphQL API token (the legacy REST token is being sunset) and that it was copied in full.
* **Unauthorized errors after connecting** — the token was revoked or rotated on StackAdapt's side. Request a fresh token and reconnect.
* **Missing campaigns or advertisers** — the token only sees what your StackAdapt account can; check your seat's permissions with your account manager.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Thrad
Source: https://help.get-ryze.ai/integrations/thrads
Connect Thrad with an API key so Ryze can read and manage campaigns, ad groups, ads, and insights across Thrad and ChatGPT supply.
Thrad connects with an **API key** you create in the Thrad Platform dashboard. Once connected, the agent can read campaigns, ad groups, ads, and insights for your Thrad account — including ads running on ChatGPT supply — and manage them when you ask.
## Step 1 — Create an API key in Thrad
In the **Thrad Platform** dashboard, go to **Settings → API keys**.
Create a new key and copy it. Thrad keys start with `ak_`.
Thrad allows **one active key per organization**. If you create a new one, the old one stops working — update Ryze if you rotate it.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **Thrad** card, paste the key into **API key**, and click **Continue**. Ryze verifies the key and the card shows **Connected**. Click **View** to see what's connected — the ad account name. To add another Thrad account, click **View** → **Add one more account**.
## Troubleshooting
* **Key rejected** — make sure you copied the full key starting with `ak_`, and that it's the currently active key for your organization.
* **Connection stopped working** — someone created a new key in Thrad, which deactivated the one Ryze holds. Paste the new key via **Reconnect**.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Webflow
Source: https://help.get-ryze.ai/integrations/webflow
Connect your Webflow site with a site token so Ryze can publish articles straight into a CMS collection.
Webflow connects with a **site API token** — a token you generate in your site's settings that lets Ryze write to your CMS without sharing your login. Once connected, programmatic articles publish straight into the Webflow collection you choose, with fields mapped automatically.
## Step 1 — Generate a site token in Webflow
In the Webflow Designer, open the site menu (top left) and click **Site settings**. You can also reach settings from the Webflow dashboard.
In the settings sidebar, open **Apps & Integrations**.
Scroll to **API access** and click **Generate API token**. Name it something recognizable, like `Ryze AI`.
Grant these scopes — everything else can stay on **No access**:
| Permission | Access |
| - | - |
| **CMS** | Read and write |
| **Assets** | Read and write |
| **Sites** | Read-only |
| **Pages** | Read and write (optional) |
CMS is how articles are created and published, Assets is where featured images are uploaded, and Sites lets Ryze list your sites so you can pick one. Pages is optional for publishing — grant it if you want the agent to fix page-level SEO (titles, meta descriptions) on your static pages.
Click **Create token** and copy it right away.
Webflow shows the token **only once**. If you lose it, revoke it and generate a new one.
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the Webflow card and paste your site token.
## Step 3 — Choose the site and collection
After the token is verified, pick the **site** that hosts your blog and the **CMS collection** where generated articles should be published.
Ryze maps your collection's fields automatically — title, slug, body, and the featured image land in the right places without manual field mapping.
**Collections with extra required fields.** Ryze fills title, slug, body, excerpt, date, and the featured image. If your collection has *other* required fields (for example a `tag` or `category` field), Ryze fills them automatically with a value it finds on your existing items — a valid option, reference, plain text, or date. If a required field has no usable value to copy (or is an image, file, or multi-reference), Ryze tells you exactly which field to make optional or give a default, at setup time, instead of failing on every publish.
## Troubleshooting
* **Token rejected** — make sure it's a **site token** from that site's settings, not a workspace token, and that the CMS scope is set to Read and write.
* **Collection missing from the list** — the token only sees the site it was created on; generate the token on the site that hosts your blog.
* **Images not appearing** — the **Assets** scope must be Read and write; regenerate the token if it was read-only.
* **"This Webflow token can read your site but not write to it — publishing would fail."** — shown when you save the collection with a token that has no CMS write access. Generate a new token with **CMS** set to Read and write (and **Pages** Read and write if you want page-level SEO fixes), then connect again.
* **The agent can't change a page's title or meta description** — the token has no **Pages** access. Generate a token with **Pages** set to Read and write and connect again.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Wix
Source: https://help.get-ryze.ai/integrations/wix
Connect your Wix site with an API key and Site ID to auto-publish SEO articles to your Wix blog.
Wix connects with two things: an **API key** you generate in your Wix account and your **Site ID**. Ryze uses them to publish generated articles straight to your Wix blog.
On the **Integrations** page, click **Connect** on the Wix card. You'll be asked for those two values — here's how to get each.
Your site needs the **Wix Blog** app installed — that's where Ryze publishes. If it isn't added yet, install **Blog** from the Wix App Market first, then connect.
## Step 1 — Create an API key in Wix
In Wix, click your profile avatar in the top-right corner and choose **Account Settings**.
In the left sidebar under **Account Settings**, open **API Keys**, then click **Generate API Key**. Give it a name like `RyzeAI`. Leave **Sites** set to **All sites** (or pick **Specific sites** and include the site you'll publish to).
Under **Permissions**, tick **All permissions** — the simplest option that's guaranteed to work. (The minimum Ryze needs to connect and publish is **Blog**, **Media**, **Members**, and **Site** read, but All permissions saves you picking them one by one. The hint in the Ryze connect window also lists **Data** and **Stores**: grant them if you want the agent to read or edit other Wix data, such as store products or collections, when you ask. They aren't needed to publish.)
Click **Generate Key**. Wix creates the key and copies the token to your clipboard automatically — paste it somewhere safe, you'll need it in Ryze.
The full token is shown only at creation. If you lose it, generate a new key and reconnect.
## Step 2 — Find your Site ID
Your **Site ID** is in your site's dashboard URL. Open the site's dashboard and look at the address bar:
```
https://manage.wix.com/dashboard/SITE_ID/home
```
The part right after `/dashboard/` is your Site ID — copy it.
The Site ID is **not** the Account ID shown on the API Keys page. Make sure you take the value from the **dashboard URL** of the specific site you want to publish to.
## Step 3 — Connect in Ryze
On the **Integrations** page, click **Connect** on the Wix card and fill in:
* **API key** — the token you copied from Wix
* **Site ID** — the value from your dashboard URL
Click **Continue**. Ryze verifies the key against your site and you're connected. Generated articles will now publish to your Wix blog.
## Troubleshooting
* **API key or Site ID rejected** — double-check both values, and confirm the key has access to this site (use **All sites** or include this site under **Specific sites**).
* **"Wix rejected the request for this site."** — check three things: the Site ID, that the Wix Blog app is installed on the site, and that the API key has the **Blog** permission and is allowed on this site.
* **Blog not found** — install the **Wix Blog** app from the App Market, then reconnect.
* **Missing permissions** — regenerate the key with **All permissions** selected and reconnect.
* **Wrong site** — make sure the Site ID comes from the dashboard URL of the exact site you want to publish to, not the Account ID.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect WooCommerce
Source: https://help.get-ryze.ai/integrations/woocommerce
Connect your WooCommerce store with a REST API key so Ryze can report on orders, revenue, refunds, products, customers, and coupons.
WooCommerce connects with a **REST API key** (consumer key and secret). Once connected, the agent can read orders, revenue, refunds, products, customers, and coupons from your store — and, with a **Read/Write** key, make changes when you ask.
## Step 1 — Create a REST API key
In WordPress, go to **WooCommerce → Settings → Advanced → REST API → Add key**.
**Read** is enough for reporting. Choose **Read/Write** if the agent should create or change things in your store.
Copy the **consumer key** (starts with `ck_`) and **consumer secret** (starts with `cs_`).
## Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the **WooCommerce** card and fill in:
* **Store URL** — the WordPress site running WooCommerce, e.g. `https://yourstore.com`
* **Consumer key**
* **Consumer secret**
Click **Continue**.
## What the agent can do
* **Read** — orders and refunds, sales reports, products and variations, customers, coupons, and shipping and tax settings
* **Change** (Read/Write key) — create coupons, products and order notes, and update orders (for example their status) and products (for example price or stock) when you ask
* **Delete** (Read/Write key) — delete coupons or products when you explicitly ask
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
To publish articles to a WordPress blog, connect [WordPress](/integrations/wordpress) as well — the WooCommerce connection covers store data.
## Troubleshooting
* **"The store must be served over HTTPS"** — WooCommerce keys are only sent over HTTPS. Use your store's `https://` address.
* **"Consumer keys start with ck\_" / "Consumer secrets start with cs\_"** — the values are swapped or incomplete. Copy both again.
* **Updates are rejected** — the key is read-only. Create a new key with **Read/Write**, then disconnect the store in **View** and connect again with the new key.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect WordPress
Source: https://help.get-ryze.ai/integrations/wordpress
Connect a self-hosted site with an application password, or a WordPress.com / Jetpack site with one click.
There are two ways to connect WordPress, depending on where your site lives:
* **Self-hosted site** — your WordPress runs on your own hosting (you log in at `yoursite.com/wp-admin`). Connects with an **application password**.
* **WordPress.com / Jetpack** — your site is hosted on WordPress.com, or it's self-hosted but connected through the Jetpack plugin. Connects with one click — you're redirected to WordPress.com to authorize access, no passwords to copy.
Not sure which one you have? If you log in at `wordpress.com`, pick **WordPress.com / Jetpack**. If you log in at your own domain's `/wp-admin`, pick **Self-hosted site**.
## Option A — WordPress.com / Jetpack
On the **Integrations** page, click **Connect** on the WordPress card and select the **WordPress.com / Jetpack** tab.
You're redirected to WordPress.com. Sign in and approve access.
If your account has several sites, choose the one Ryze should publish to. Done — no passwords needed.
For Jetpack sites, make sure the Jetpack **JSON API** module is enabled — Ryze publishes through it. If the connection fails, enable the module in Jetpack settings and reconnect.
## Option B — Self-hosted site
A self-hosted site connects with an **application password** — a special key you generate in WordPress that lets Ryze access your site without sharing your real login.
### Step 1 — Generate an application password
In your WordPress admin, go to **Users → Profile** (or **Users → All Users → your user → Edit**).
Scroll to the bottom of the profile page to the **Application Passwords** section.
Enter a name like `Ryze`, then click **Add New Application Password**. WordPress shows the generated password **once** — copy it now.
The application password is shown only once. If you lose it, just generate a new one.
### Step 2 — Connect in Ryze
On the **Integrations** page, click **Connect** on the WordPress card, select the **Self-hosted site** tab, and fill in:
* **Site URL** — your site address, e.g. `https://example.com`
* **Username** — the login you use to sign in to WordPress admin (usually at `/wp-admin`)
* **Application password** — the password you just copied
Click **Continue**. Ryze verifies the connection.
## After connecting
Click **View** on the WordPress card to optionally choose the **Author** and **Category** new posts use, then click **Save**.
To publish to several WordPress sites, click **View** → **Add one more account** and connect the next site.
## Troubleshooting
* **Credentials rejected** (self-hosted) — double-check the username and application password.
* **REST API not found** — make sure the WordPress REST API is enabled and the site URL is correct.
* **Jetpack site won't connect** — enable the Jetpack JSON API module, then reconnect.
* **Can't reach the site** — verify the site URL is reachable and uses `https://`.
* **"…a security plugin, WAF or host is blocking Ryze. Allowlist our requests, then reconnect."** or **"…the site is likely behind a bot challenge, maintenance mode, or a security plugin intercepting /wp-json requests"** — Cloudflare, Wordfence or your host's firewall is blocking requests to `/wp-json`. Allowlist requests from Ryze (the user agent contains `RyzeBot`) or turn off the bot-protection rule for `/wp-json`, then reconnect.
* **My login page isn't `/wp-admin`** — that's fine. Enter the username you sign in with and its application password; the login address itself doesn't matter.
* **"Featured image skipped — the image could not be uploaded to the WordPress media library."** — the article is published without a cover. Republish later, or add the image in WordPress.
* **"The cover image was uploaded to the media library but WordPress did not attach it to the post as the featured image; set it in the post editor."** — Ryze already retried once. Open the post in WordPress and set the featured image by hand.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Connect Zoho CRM
Source: https://help.get-ryze.ai/integrations/zoho-crm
Connect Zoho CRM with OAuth so Ryze can read and edit records, modules, and settings in your CRM.
Zoho CRM connects with **OAuth** — you sign in to Zoho and approve access, no keys to copy. Once connected, the agent can read and edit CRM records and modules, run queries, and work with your CRM data next to your marketing data. When you explicitly ask, it can also delete records — deleted records go to the Zoho CRM recycle bin.
## Connect in Ryze
Open **Integrations** in the left sidebar and find the **Zoho CRM** card (use the **CRM** filter).
You're sent to Zoho to sign in. Any Zoho data center works — US, EU, India, Australia and others. Ryze detects yours from the sign-in and routes requests to the right one.
Approve the requested access to CRM modules, settings, users, and organization details.
The card then shows **Connected**. Click **View** to see the connected organization's name. Access renews automatically — you don't need to reconnect on a schedule.
By default the agent runs its tools on its own: the [**Tool approvals**](/agent/chat#tool-approvals) setting in the chat composer starts on **Skip all approvals**. To review changes before they happen, switch it to **Approve write & delete** (reads run freely, changes need approval) or **Manual approve** (every tool that touches your data needs approval). Scheduled tasks run without an approval step.
## Connect more than one organization
You can connect several Zoho CRM organizations to the same workspace. Click **View** on the Zoho CRM card, then **Add one more account**, and sign in to the other organization. See [Connect multiple accounts](/integrations/multiple-accounts) for how the agent picks between them.
## Troubleshooting
* **Reconnect needed** — Zoho revoked the access (password change, admin revocation, or the Zoho user lost CRM access). Click **Reconnect**.
* **No data in answers** — the Zoho user you signed in with can't see those modules. Sign in with a user who can, or adjust the profile in Zoho.
Still stuck? Email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# What is Ryze AI
Source: https://help.get-ryze.ai/introduction
Ryze is a marketing app with its own agent, the AI Marketer, that runs your SEO and paid ads from your connected accounts.
Ryze is a web app for running your marketing. At its center is the **AI Marketer** — an agent that reads your connected accounts, does the work (articles, technical fixes, campaigns, creatives, reports) and brings you anything that needs a decision. You can chat with it, schedule it, or let it run on its own and check in on **Home**.
## What's in the app
Everything lives in the left sidebar of your workspace:
| Section | What it's for |
| - | - |
| **Home** | Setup steps, what needs your decision, and how results are moving. See [Home](/home). |
| **AI Marketer** | **New chat** and **Chat History** (see [Chat with the AI Marketer](/agent/chat)), plus [Schedules](/agent/schedules), [Templates](/agent/templates) and [Reports](/agent/reports). The **AI Marketer** button in the top bar opens the same agent in a side panel on any page. |
| **Integrations** | Connect Search Console, Analytics, ad accounts, your CMS and more. See [Integrations](/integrations/overview). |
| **Brand** | Who you are, your voice and audience — the agent reads it before every task. See [Brand](/agent/context). |
| **Media** | Your product photos and videos for creatives and articles. See [Media library](/workspaces/media). |
| **Analytics** | Web Analytics ([Ryze Pixel](/paid-ads/ryze-pixel)), [Ads and Search Performance](/analytics/performance), [AI Visibility](/seo/ai-visibility). |
| **Ads** | Managed Campaigns, My Creatives, Ad Templates, Competitor Ads. See [Paid Ads](/paid-ads/introduction). |
| **SEO** | Technical Audit, Content Plan, Keywords & Prompts, Backlinks & PR, [Preferences](/seo/preferences). See [SEO](/seo/introduction). |
| **A/B Testing** | Store A/B tests designed, applied and measured by the Ryze team — part of Shopify CRO. See [Plans and pricing](/plans/overview). |
**Ads** and the ads analytics come with Paid Ads; **SEO**, Search Performance and AI Visibility come with the SEO plans. Sections your plan doesn't include show an **Unlock** label — click it to see the plan that adds them.
## Start here
Open **Home** and work through the **Finish setup** cards — a short setup chat, your brand profile, and the connections the agent needs. Once they're done, the agent takes over.
What each setup card does and how to read Home.
Search Console, Analytics, Google Ads, Meta and more.
Review and approve what the agent proposes.
One workspace per site or client.
## Also in Claude, ChatGPT and Grok
Optionally, connect Ryze to the AI assistant you already use and talk to the same workspace data from there. It's an extra way in, not a replacement for the app.
* [Connect Claude](/claude/connect)
* [Connect ChatGPT](/chatgpt/connect)
* [Connect Grok](/grok/connect)
## Plans
| Plan | Price | Trial |
| - | - | - |
| **Paid Ads** | \$89/month | 7-day free trial |
| **SEO Starter** | \$129/month | 3-day free trial |
| **Agency** | \$279/month | 7-day free trial |
| **Traffic Printer** | \$599/month | — |
| **Shopify CRO** | \$1,499/month | — |
Shopify CRO includes Paid Ads. Paying yearly saves 30% in the first year. Trial and billing details: [Plans and pricing](/plans/overview).
## Get help and send feedback
* **Help & support** — the button in the bottom-right corner of the app. **Ask a question** sends a message to the Ryze team; a real person replies. **Open knowledge base** opens this help center, and **System status** opens the live status page ([status.get-ryze.ai](https://status.get-ryze.ai)).
* **Share Feedback** — the speech-bubble icon in the top bar, or **Share Feedback** in the account menu at the bottom left. In **Send feedback**, pick a **Type** (**Bug report**, **Feature request**, **Question**, **Integration request** or **Other**), write your **Message** and click **Send**.
* **Changelog** in the account menu shows what's new.
* Or email [support@get-ryze.ai](mailto:support@get-ryze.ai).
# Ad Templates
Source: https://help.get-ryze.ai/paid-ads/ad-templates
Browse a library of ads that work, by industry, pick up to 3 and have the agent make versions for your brand.
Prefer video? Watch the [Ad templates guide](/guides/ad-templates).
**Ad Templates** is a library of ads that work, sorted by industry. Use them as visual references: pick the ones you like and the agent makes versions for your brand. Find it under **Ads → Ad Templates** in the sidebar.
## Browse by category
Filter the library with **Category**: Beauty & Personal Care, Fashion & Apparel, Food & Beverage, Home & Garden, Pet, Baby & Kids, Electronics, Automotive, Outdoor & Sports, Health & Fitness, Software & SaaS, Finance & Fintech, Healthcare & Medical, Travel & Hospitality, or Other. **All** shows every template.
## Turn templates into your own ads
1. Click the templates you like to select them — up to 3 at a time. **Clear** resets the selection.
2. Click **Use as reference**.
3. A chat opens with the templates attached. The agent makes versions for your brand and suggests a few angles for how to run them.
Then iterate as with any creative — see [AI Ad Creatives](/paid-ads/ai-creatives).
## Other places to find templates
* **Ads → My Creatives** — the **Start from a winning ad in your niche** shelf above your creatives.
* **The chat composer** — **+ → Reference ads → Templates** attaches templates to any message.
## Related
Generate on-brand creatives from a brief.
See the live ads other brands are running.
# AI Ad Creatives
Source: https://help.get-ryze.ai/paid-ads/ai-creatives
Generate on-brand ad creatives and UGC videos from a short brief in chat, and find them all in My Creatives.
Prefer video? Watch the [Generating ad creatives guide](/guides/ad-creatives).
Ryze generates ready-to-run ad creatives from a short brief — on-brand and in multiple directions.
## Generate creatives in chat
Just describe what you want:
> Can you help me generate creatives with a modern style for the Ryze AI brand?
Ryze returns several distinct directions, each with its own aesthetic — so you can pick the lane that fits.
Each rendered creative costs 2.5 credits (also when it's re-rendered after an edit), plus 0.5 credits for each photo the agent generates for it. See [Credits & Usage](/agent/credits).
## Write a good brief
The more you give Ryze, the better the output. Include:
* **Brand** — who it's for and the vibe
* **Format** — e.g. vertical 4:5 for feed
* **Angle** — the hook, offer, or message
* **Style** — modern, minimal, bold, etc.
Ask Ryze to iterate: swap a hook, change the angle, or push a direction further. Tell it what to keep and what to change.
## UGC video ads
Ask the agent for a UGC video and it renders a vertical, phone-shot-looking clip: an AI person holding **your real product** and speaking to camera, lip-synced, in a natural voice. Rendering takes up to five minutes — you don't have to wait in the chat; the finished video lands in **Ads → My Creatives** on its own.
It works from your actual product photos, not a description. The agent writes a brief covering the product as it appears in the photo, who is holding it, the room, and the exact spoken lines. You can direct any of that — a different actor, a different room, or your own script.
**Format:** 9:16 vertical, 5–12 seconds (8 by default). **Cost:** 10 credits per video.
* **Films well:** rigid packaged goods with one large, clear label — bottles, cans, jars, boxes, devices.
* **Films badly:** fabric with dense repeated print, and anything where fine print has to stay legible while the product moves. If your product is in this group, the agent tells you instead of handing you a clip with a scrambled label.
* **Give it one clear product photo**, and write the dialogue like speech — two to four short sentences a person would actually say.
* **If a render comes back rejected**, the brief tripped content moderation or the photo was unusable. Change the brief or the photo — the same brief fails the same way.
* The person on screen is generated for that clip — never ask for a real, named person.
## The + menu in the composer
The **+** button in the chat composer gives you three ways to steer a creative run without typing it all out:
* **Attach files** — **Upload from computer**, **Choose from Media** (your workspace's image library), or **Upload from Drive**.
* **Reference ads** — pick from **My ads** (your creatives) or **Templates** (the [Ad Templates](/paid-ads/ad-templates) library). You can attach up to 3 images per message, including files you already attached. They're attached so the new directions follow their look.
* **Image aspect** — **Auto**, **Square** (1:1), **Story** (9:16), or **Wide** (1.91:1). Pick one to fix the creative size for the conversation instead of describing the format in every message.
## Add your brand references
Ryze reads your brand colors and fonts from your site and applies them to every creative it generates. You can review and edit them under **Brand → Visual**.
Product photos, logos and your best-performing creatives go to **Media** in the sidebar — upload them there and the agent picks from them before it looks anywhere else. See [Media library](/workspaces/media).
No references yet? Ryze still generates from your brief and your site's identity — but adding a few of your best-performing creatives to Media is the fastest way to make every new one look unmistakably yours.
## Review, annotate, and iterate
Every creative in chat opens **fullscreen** — click it to inspect the details, download it, or leave feedback right on the image.
Click **Add comments**, then tap anywhere on the image and describe the change — "remove logo", "make the headline bigger", "different background". Each note is pinned to the exact spot you tapped.
Hit **Send** and your notes go back to the agent as visual feedback — it sees the circled areas and regenerates with your changes applied.
## See your live ads in chat
The same widget shows creatives that are already running. Ask about your Meta, LinkedIn, Snapchat, or TikTok ads and the agent pulls the actual images with their performance — spend, clicks, CTR — side by side.
Combined with annotation, this closes the loop: pull a live ad, circle what's tired, and have the agent generate the refresh.
## Browse your creatives
**Ads → My Creatives** (the page is titled **Ad Creatives**) shows every image and UGC video generated in this workspace.
* **Search creatives** at the top finds a creative; **Generate Creative** starts a new chat.
* Click a card to see its **Type**, **Hook**, **Size**, **Status** and **Created** date, then **Download** it or **Iterate in chat**. **Delete** removes it.
* A card marked **Generation failed** or **Blocked by the safety filter** didn't render — reword the brief and try again.
* Above the grid, **Start from a winning ad in your niche** shows [Ad Templates](/paid-ads/ad-templates) you can use as a reference.
# Competitor Ads
Source: https://help.get-ryze.ai/paid-ads/competitors
See the live ads your competitors are running, and get an email when they launch something new.
Prefer video? Watch the [Competitor ads guide](/guides/competitor-ads).
Find it under **Ads → Competitor Ads** in the sidebar. Ryze pulls the ads brands are running right now across Google, Meta, and LinkedIn — so you always know what your competitors are putting out.
The page has two tabs:
* **Explore** — live ads from brands in your industry, whether you track them or not. Filter by industry, platform, format, duration and status, and sort by **Newest** or **Trending**. Like what a brand is doing? Use the track button on its ad to add it to your list.
* **Tracked Competitors** — the ads of the brands you track.
## Track a competitor
Click **Add competitor**, then enter the brand name and its domain, and click **Track**.
When you don't have any competitors yet, the Tracked Competitors tab offers **Discover competitors**: Ryze finds brands running ads in your space and you pick the ones to track (or **Add manually**).
The first sync usually takes 3–5 minutes — the page updates on its own when it's ready. **Re-sync** at the top pulls fresh ads for every tracked brand on demand.
You can track up to 5 competitors per workspace. Pick the brands you actually compete with for the most useful view.
**No ads showing for a competitor?** Ryze looks the brand up by the name and domain you entered:
* **Meta** — ads are found by the brand name, then matched to the brand's Facebook page by the domain and name in the ads. Once the page is matched, Ryze pulls its ads from all countries.
* **Google** — ads are found by the domain, in your workspace's market: the one you confirmed in the setup chat, or **Target market** under **SEO → Preferences** if you have SEO. When no market is set, Ryze uses the US. The market is taken when you add the competitor.
* **LinkedIn** — ads are found by the advertiser name.
If nothing shows up after the first sync, check that the name matches the brand's Facebook page and that the domain is the one its ads link to. To correct either, stop tracking the brand (trash icon on its chip) and add it again, then click **Re-sync**. The brand may also simply not be running ads right now.
## Browse their ads
On **Tracked Competitors**, each brand is a chip at the top — click one to see only its ads. Use the filters to narrow things down:
* **Platform** — Google, Meta, or LinkedIn.
* **Format** — text, image, or video.
* **Duration** — how long an ad has been running. Ads that run a long time are usually the ones that work.
* **Status** — active or inactive.
Click any ad to open it. You'll see the format, platform, how long it's been running, and whether it's still active — plus **Open original**.
To stop tracking a brand, click the trash icon on its chip.
## Get an email when they launch new ads
Click the bell icon on a competitor's chip to turn on new-ad alerts, and Ryze emails you when they ship new ads — so you don't have to keep checking.
How it works:
* **Ryze refreshes your competitors' ads once a week** and checks each tracked brand for new creatives.
* **If a competitor launched new ads, you get one email** with a summary of who shipped what, and a link back to this page.
* **No new ads, no email.** You only hear from Ryze when there's something new to see.
Alerts are off by default — turn them on per competitor.
## Turn an ad into your own
Found an ad worth borrowing? Open it and click **Iterate with AI** (available for text and image ads, not for video). Ryze opens a chat with the ad's image attached, if it has one:
* If the ad has copy — a headline, text or call to action — the chat asks for 3 stronger variations of that copy:
> Here's a competitor's ad copy. Write me 3 stronger variations I can use.
* If it has no copy, the chat asks Ryze to create your own version of the ad.
Then keep going in the chat to rework it for your brand.
Pair this with [AI Ad Creatives](/paid-ads/ai-creatives) — rewrite the copy, then generate matching visuals on your brand.
## Related
Generate on-brand creatives from a brief.
What Paid Ads can do.
# Paid Ads FAQ
Source: https://help.get-ryze.ai/paid-ads/faq
Common questions about Paid Ads: supported platforms, approvals, your existing campaigns, files, audiences and cancelling.
Ryze connects to Google Ads, Meta, LinkedIn, Microsoft Ads, TikTok, Snapchat, Reddit, OpenAI Ads, Pinterest, Criteo, StackAdapt and Thrad under **Integrations**. In chat the agent works with all of them. [Managed Campaigns](/paid-ads/managed-campaigns) and the **Ads Performance** dashboard cover Google Ads, Meta, LinkedIn, Microsoft Ads, TikTok, Snapchat, Reddit and OpenAI Ads; Pinterest, Criteo, StackAdapt and Thrad are available in chat only. See [Connect other ad platforms](/integrations/ad-platforms).
Yes — you decide what needs your sign-off. In the Ryze chat, the **Tool approvals** setting in the composer controls it: **Manual approve** (every tool that touches your data needs approval), **Approve write & delete** (reads run freely, changes need approval) or **Skip all approvals** (the agent runs every tool on its own). It's set to **Skip all approvals** by default — switch it if you want to sign off on changes. In Claude, set write and delete tools to **Needs approval** — see [Permissions & Approvals](/claude/permissions).
Ask in chat — describe the brand, format, and style. See [AI Ad Creatives](/paid-ads/ai-creatives).
Once a week. Ryze checks each competitor you track for new ads, and if you've turned on alerts, emails you a summary when one launches something new. You can also click **Re-sync** on the Competitor Ads page at any time. See [Competitor Ads](/paid-ads/competitors).
Yes. Use **Schedules** in the sidebar: the agent runs the task daily, weekly, monthly or once at a set time, in a fresh chat, and sends you the result by email or Slack. Each run costs credits per AI step, so keep the scope tight. See [Scheduled Tasks](/agent/schedules).
It acts directly in your connected accounts through the official APIs — creating campaigns, adjusting budgets, bids, keywords and creatives. In chat, changes follow your **Tool approvals** setting (or "Needs approval" in Claude). Improvements the agent finds on its own come to your [Inbox](/agent/approvals) for sign-off, and [Managed Campaigns](/paid-ads/managed-campaigns) act on their own inside the mandate you set. New campaigns then go through the platform's own review (about a business day on Google).
Yes. Use the **+** button in the chat composer → **Attach files** to upload images (JPG, PNG, WebP or GIF, up to 10 MB each, 3 per message) or documents (PDF, DOCX, XLSX/XLS, CSV, TXT or MD, up to 20 MB each, 3 per message) from your computer, choose them from Media, or pick Google Docs, Sheets and Slides with **Upload from Drive**. Images from Google Drive aren't supported — upload them directly. Product photos and videos you want reused across creatives go to **Media** in the sidebar (see [Media library](/workspaces/media)). The agent can also hand you files back — for example a CSV feed.
Deck reports download as PDF, can be sent by email, and can be shared by link; Dashboard reports are shared by link only. Excel/XLSX export isn't available; for a spreadsheet, ask the agent for the data as a table and paste it into your sheet.
Ryze isn't read-only by design, but you control changes: keep **Tool approvals** on **Manual approve** or **Approve write & delete** (or write and delete tools on **Needs approval** in Claude), and reject anything you don't want in your Inbox. If you need a hard guarantee, connect a Google or Meta login that only has read access.
Not on its own. In chat, the agent changes only what you ask for, following your **Tool approvals** setting. A [Managed Campaign](/paid-ads/managed-campaigns#what-happens-in-your-ad-account) always builds its own campaign, named "*your campaign name* \[Managed by Ryze]", in the ad account you picked. Your existing campaigns are never paused, edited or reused — the agent only reads the last 90 days of the account to learn what worked. If one of your campaigns already targets the same landing page, keywords or audience, the agent leaves it alone and names the overlap in **Progress** so you can decide.
* **Managed Campaign** — **Pause** on the campaign page stops delivery. Pause first, then choose **Delete** from the menu if you want it gone.
* **Chat** — **Tool approvals** in the composer is **Skip all approvals** by default, so the agent runs every tool on its own. Switch it to **Manual approve** or **Approve write & delete**, and press **Deny** on anything you don't want.
* **Inbox proposals** — nothing is applied until you click **Approve**. See [Approvals](/agent/approvals).
* **To cut access completely** — disconnect the ad account under **Integrations** with the trash icon.
Yes. By default, creating the campaign authorizes the agent to launch it. To approve first, write "Don't launch without my approval" in **Anything the agent should know?** when you create it. The agent builds everything paused, marks the campaign **Needs your input** and waits. Review the ads in your ad account (or on the campaign page), then give your go in the reply box on the campaign page. See [Managed Campaigns](/paid-ads/managed-campaigns#faq).
When the Paid Ads subscription for the workspace ends, each live Managed Campaign is paused on the ad platforms at its next scheduled check (the **Next check** date on the campaign page). Until then it keeps running and spending as set up — so press **Pause** on the campaign before you cancel if you want ads to stop right away. Nothing is deleted. While the plan is inactive the **Ads** section is locked; once you resubscribe, **Resume** turns the campaign back on.
For Google Ads — yes. Attach a CSV of your customers (email or phone) in chat and ask the agent: it creates a Customer Match list, uploads the contacts (they're hashed before they reach Google) and can use the list for targeting or exclusions. Changes follow your **Tool approvals** setting.
# Getting started with Paid Ads
Source: https://help.get-ryze.ai/paid-ads/getting-started
Go through the Paid Ads setup chat step by step — your site, your ad platforms, your ad accounts — and see what to do first once you're set up.
When you start Paid Ads (it comes with a 7-day free trial), Ryze opens a short setup chat called **Getting started with Ads**. It takes a few minutes. If you left before finishing, open **Home** and click the **Finish Ads setup** card under **Finish setup**. Here's what the chat asks and what to do afterwards.
## The setup chat
If Ryze doesn't know yet, the chat first asks how you heard about it. Pick an answer and move on.
Enter your website's domain. Working on a client's site? Enter their domain. Ryze reads the site and shows what it understood: what your business sells, its industry and its market. Click **Yes, that's us**, or **No, let me fix it** to correct the details.
Pick the ad platforms you use — or **Not running ads yet**. Ryze only asks you to connect what you actually use.
Connect each platform you picked. Ryze then pulls spend, performance and creatives.
Nothing in your accounts changes just because you connected them. Changes happen only when you ask the agent to do something in chat (they follow your **Tool approvals** setting, which is **Skip all approvals** by default), when you approve a proposal in your [Inbox](/agent/approvals), when a [scheduled task](/agent/schedules) you set up runs, or when you create a [Managed Campaign](/paid-ads/managed-campaigns).
**Add to Claude** lets you use this workspace's tools from Claude — see [Claude](/claude/connect). Then invite teammates: they get full access to integrations, chat and Slack — see [Invite Teammates](/workspaces/invite-teammates). You can skip both and come back later.
When you're done, click the button at the end of the chat and your agent takes it from there.
## What to do next
* **Ask about your numbers.** Open a chat and try: "Pull the last 7 days of spend and break it down by campaign."
* **Check your Inbox.** Once your ad accounts are connected, the agent checks them several times a day on its own and sends proposed fixes to your [Inbox](/agent/approvals). Nothing is applied until you click **Approve**.
* **Put a weekly report on a schedule.** Use **Schedules** in the sidebar to get a weekly recap by email or Slack. See [Scheduled Tasks](/agent/schedules).
* **Create your first Managed Campaign.** Set a daily budget and a goal, and the agent builds, launches and reviews the campaign. See [Managed Campaigns](/paid-ads/managed-campaigns).
* **Install the Ryze Pixel.** One script on your site for web analytics and, if you choose, server-side conversions. See [Web Analytics & Ryze Pixel](/paid-ads/ryze-pixel).
## Related
What Paid Ads can do and where everything lives.
Connect your Google Ads account.
Connect your Meta ad account.
Common questions about Paid Ads.
# Google Ads automation in Ryze: what the AI agent does in your Google Ads account
Source: https://help.get-ryze.ai/paid-ads/google-ads
What the Ryze agent can read and change in Google Ads, including manager (MCC) accounts, how approvals work, and how to start.
Ryze is an AI agent for Google Ads. Once Google Ads is connected, you can ask about campaign performance in plain language, and the agent can act on campaigns under the approval settings you choose. It works the same in the Ryze chat and from Claude or ChatGPT through the Ryze connector.
## What the agent does in Google Ads
* **Answers performance questions:** spend, ROAS, conversions and changes across every account your login can reach, including client accounts under a manager (MCC) login.
* **Changes campaigns through Google's official API:** creates campaigns, adjusts budgets, bids and keywords, pauses or resumes, and updates ads. Changes follow your **Tool approvals** setting, so you decide what needs your sign-off. See [Paid Ads FAQ](/paid-ads/faq).
* **Proposes fixes on its own:** once accounts are connected it checks them several times a day and sends proposed fixes to your [Inbox](/agent/approvals).
* **Runs a campaign end to end:** with [Managed Campaigns](/paid-ads/managed-campaigns) you set a daily budget and a goal; before building, the agent reads the last 90 days of the account, including converting search terms. It creates its own campaign named "\[Managed by Ryze]" and never pauses, edits or reuses your existing campaigns.
* **Watches competitors:** live Google ads from the brands you track. See [Competitor Ads](/paid-ads/competitors).
* **Sends conversions server-side** to Google Ads with the [Ryze Pixel](/paid-ads/ryze-pixel), if you turn it on.
## What you need
* A Google login with access to at least one Google Ads account; standard or admin access to allow changes. Agencies connect the manager login once. See [Connect Google Ads](/integrations/google-ads).
* The Paid Ads plan: $89/month with a 7-day free trial, up to 3 workspaces. The Agency plan ($279/month) covers unlimited workspaces. See [Plans & pricing](/plans/overview).
## Try it
> Pull the last 7 days of Google Ads spend and break it down by campaign.
> Which search terms spent money without converting this month? Add the worst ones as negatives.
> What changed in my account in the last week?
Related: [Meta Ads in Ryze](/paid-ads/meta-ads) · [Paid Ads overview](/paid-ads/introduction) · [Connect Claude](/claude/connect)
# Paid Ads overview
Source: https://help.get-ryze.ai/paid-ads/introduction
Your AI marketer for paid ads — chat with your ad data, let the agent run campaigns, generate creatives and track conversions. Plan, access and where everything lives.
Prefer video? Watch the [Paid ads on autopilot guide](/guides/paid-ads).
Paid Ads gives your AI marketer direct access to your ad accounts. Connect Google Ads, Meta and any other ad platform under **Integrations** once, then just ask — in the Ryze chat, or from Claude or ChatGPT if you've connected them.
New here? Follow [Getting started with Paid Ads](/paid-ads/getting-started).
## What you can do
* **Understand performance** — ask about spend, ROAS, CTR, and trends across accounts. **Analytics → Ads Performance** shows the same numbers as a dashboard. See [Search and Ads Performance](/analytics/performance).
* **Manage campaigns** — create campaigns, adjust budgets, pause or resume, with the approvals you choose. Or hand a campaign over completely with [Managed Campaigns](/paid-ads/managed-campaigns).
* **Generate creatives** — produce on-brand ad creatives from a short brief. See [AI Ad Creatives](/paid-ads/ai-creatives).
* **Watch competitors** — see the live ads other brands are running. See [Competitor Ads](/paid-ads/competitors).
* **Track your site** — install the [Ryze Pixel](/paid-ads/ryze-pixel) once for first-party web analytics and, if you choose, forward conversions server-side to Meta, Google Ads, TikTok and GA4. It lives under **Analytics → Web Analytics**.
## Where everything lives
* **Analytics → Ads Performance** — the dashboard of your connected ad accounts.
* **Analytics → Web Analytics** — the Ryze Pixel and your site's analytics.
* **Ads → Managed Campaigns**, **Ads → My Creatives**, **Ads → Ad Templates** and **Ads → Competitor Ads**.
## Plan and access
* Paid Ads is a separate plan: $89/month with a 7-day free trial, covering up to 3 workspaces. The Agency plan ($279/month) covers unlimited workspaces. See [Plans & pricing](/plans/overview).
* Without it, the **Ads** section and **Ads Performance** show an **Unlock** badge.
* Web Analytics (Ryze Pixel) is available on every plan.
* Once your ad accounts are connected, the agent checks them several times a day on its own and sends proposed fixes to your [Inbox](/agent/approvals). This background research doesn't use your credits.
## Example prompts
Start a chat and try:
> Pull the last 7 days of Google Ads spend and break it down by campaign.
> Which Meta campaigns have the best ROAS this month?
> Generate 3 modern ad creatives for our spring launch.
## Get started
The setup chat, step by step, and what to do first.
Set a budget and a goal — the agent runs the campaign.
Generate on-brand creatives.
Web analytics from one script, plus optional server-side conversions.
# Managed Campaigns
Source: https://help.get-ryze.ai/paid-ads/managed-campaigns
Set a daily budget and a goal — the agent builds, launches and keeps reviewing its own campaign in your ad accounts.
Managed Campaigns are autonomous. You set the mandate — budget, platforms, conversion goal, location, landing page — and the agent does the rest: creates the ads, launches them on your connected ad accounts, and keeps reviewing performance.
Find them under **Ads → Managed Campaigns** in the sidebar.
## How it works
1. **Create a campaign** — click **New Managed Campaign** and go through the three steps described below. Anything the agent should know — offers to push, claims to avoid — goes in **Anything the agent should know?**
2. **The agent sets it up** — it checks your budget, landing page and conversion tracking, generates on-brand creatives, builds the campaign structure, and launches it. If anything needs your input, it stops and asks you right on the campaign page.
3. **The agent keeps reviewing it** — it reads performance, pauses losers, shifts budget to winners inside your total, and rotates fresh creatives when the current ones fatigue. It sets the date of its next review itself — you see it in **Next check** on the campaign page.
4. **You watch Progress** — every run ends with a short note in **Progress** on the campaign page, and each entry links to the full agent chat.
Inside the mandate the agent acts on its own. Changes it wants to make beyond the mandate — a higher budget, a new platform, a different goal — come to your [Inbox](/agent/approvals) as approvals you decide on. If you ask for such a change yourself in **Tell agent**, the agent applies it (see [Steer the campaign](#steer-the-campaign)).
## Create a campaign
Click **New Managed Campaign**. The dialog has three steps.
Enter the daily budget in US dollars under **How much per day?**. The estimated monthly ad spend and the Ryze fee for that budget show right under the field. For budgets of \$250/day and more, the dialog reminds you that the budget is in USD, not in your local currency.
Under **Where should your ads run?**, tick the platforms and pick the ad account for each. Only platforms with a connected ad account are shown — connect them under [Integrations](/integrations/overview) first. With two or more platforms, set each platform's share of the budget; the shares must add up to 100%.
Under **What do you want more of?**, pick the goal: **More sales**, **More leads**, **More sign-ups**, **More trials**, **More subscribers**, **More add-to-carts**, **More checkouts**, **More bookings**, **More inquiries** or **More traffic**.
Next to each option you see how many of those events your Meta and Google Ads accounts recorded in the last 30 days (**N events / 30d**, in amber when it's zero). **—** means Ryze can't count that event for the selected platforms. If you pick a goal with no tracked events, the dialog warns that the agent can't optimize for it — fix tracking or pick another goal.
Then enter your landing page URL under **Where should ads send people?**.
Everything is pre-filled — adjust if you want:
* **Campaign name**.
* **Where are your customers?** — the country to target.
* **Special ad category** — **None**, **Financial products**, **Employment**, **Housing** or **Social or political**. Pick one if it applies to your ads: the ad platforms require it.
* **Anything the agent should know?** — optional: offers to push, audiences or claims to avoid, tone of voice, seasonal angles.
Click **Create campaign**.
Creating the campaign authorizes the agent to build and launch it — setup starts on its own right away. To review it before it goes live, see [Can I review the campaign before it goes live?](#faq) below.
## What happens in your ad account
* The agent creates its own campaign on each platform, named "*your campaign name* \[Managed by Ryze]" (plus a short id if that name is already taken), in the exact ad account you picked. Ad sets and ads inside it get plain descriptive names.
* Your existing campaigns are never paused, edited or reused. Before building, the agent reads the last 90 days of the account — what spent, what converted, top ads, converting search terms — to learn from it.
* If one of your own campaigns already sends traffic to the same landing page or bids on the same keywords or audience, the agent leaves it alone and names the overlap in **Progress** so you can decide.
* Everything it builds is visible in each platform's own ads manager. On the campaign page, every ad has an **Open on *platform*** link.
## Campaign statuses
* **Not launched** — just created. Setup starts on its own ("Launch queued — the agent picks this campaign up in a moment"). If it doesn't start, a **Launch** button appears.
* **Setting up** — the agent is checking your account, tracking and landing page, and building the campaign.
* **Needs your input** — the agent stopped with questions. Answer them in the reply box on the campaign page.
* **Live** — running. The agent reviews it on its own schedule — see **Next check**.
* **Paused** — delivery is stopped on the platforms. **Resume** turns it back on — the agent first checks that the landing page is up and conversion tracking still works.
* **Failed** — setup couldn't finish. **Retry setup** starts it again.
* **Archived** — ended by the agent at your request.
You may also see **Blocked** with an **I fixed it** button when something outside Ryze stops delivery. It's rare — normally the agent asks you through **Needs your input** instead.
## The campaign page
* **Top row** — **Budget**, **Goal**, **Location**, **Age**, **Managed for** and **Next check**.
* **Results** — **Spend**, **Results**, **CPA** and **ROAS**.
* **Ads** — every ad the agent built, with **Spend**, **Impressions**, **Clicks**, **CPA** and **ROAS**. Sort by any of them and filter by **Active**, **Inactive** or **All statuses**. Click an ad for its preview and the **Open on *platform*** link.
* **Refresh from the ad platforms** pulls fresh numbers on demand.
* **Progress** — the agent's notes from every run. **View all** shows the full history.
## Platforms
Managed Campaigns run on Meta, Google Ads, LinkedIn, Microsoft Ads, TikTok, Snapchat, Reddit and OpenAI Ads — on whichever of them you've connected under **Integrations**.
## What the agent will never do
* Set budgets above your mandate.
* Add platforms, widen targeting, or change your landing page on its own.
* Touch anything in your ad account outside the campaign it manages.
Two things to know about the budget:
* **It's a daily amount in US dollars.** If your ad account bills in another currency, the agent converts the amount into that currency when it sets the budget on the platform.
* **Platforms can spend more than the daily budget on a strong day** — Meta up to 75% more, Google up to twice — and even it out over the following days. That's how platform daily budgets work.
## Steer the campaign
* **Tell agent** — send instructions in your own words ("stop pushing the bundle offer, lead with free shipping"). The agent acts on them and reports back in **Progress**. Available while the campaign is Live or Paused. You can also ask here for changes the **Edit mandate** dialog doesn't cover — "add Google Ads", "optimize for leads instead": your instruction becomes part of the mandate and the agent applies it on the platforms.
* **Edit mandate** — from the campaign's menu, change the daily budget, location, landing page, the split between platforms and **Anything the agent should know?**. Available while the campaign is Live or Paused. Click **Send to the manager** and the agent applies the difference on the ad platforms. A budget change of more than about 20% or a targeting change resets the platforms' learning phase — expect 3–7 days of noisier delivery.
* **Pause** and **Resume** — stop and restart delivery on the platforms.
## Pricing
Managed Campaigns are charged as a percent of actual ad spend, billed monthly on the last day of the calendar month. The rate starts at **5%** and steps down as your daily spend grows, down to a floor of **0.8%** from \$500k/day. The rate is marginal — each slice of spend is charged at its own bracket, so growing your budget never makes a previous dollar more expensive.
| Daily ad spend | Fee rate |
| - | - |
| Up to \$300/day | 5% |
| $300 – $1,400/day | 4.9% – 4.8% |
| $1,400 – $10,000/day | 4.7% – 4.4% |
| $10,000 – $100,000/day | 4.3% – 3.1% |
| $100,000 – $500,000/day | 3% – 0.9% |
| \$500,000+/day | 0.8% |
The exact fee for your budget is shown right under the budget field when you create a campaign — for example, $50/day is about $1,517/mo of ad spend and about \$76/mo in fees.
You only pay for spend the agent actually manages. Pausing a campaign stops its fees with it.
The agents that set up and run a Managed Campaign — setup, reviews, new creatives, your **Tell agent** messages — don't use your credits. You pay only the fee on ad spend above. See [Credits & Usage](/agent/credits).
## FAQ
**Can I stop it at any time?**
Yes — **Pause** on the campaign page stops all delivery on the platforms. **Resume** turns it back on. To remove a campaign from Ryze, pause it first, then choose **Delete** from the menu; ads already created on the ad platforms stay in your ad account.
**Can I review the campaign before it goes live?**
By default, creating the campaign authorizes the agent to launch it. If you want to approve first, write "Don't launch without my approval" in **Anything the agent should know?**. The agent builds everything paused, marks the campaign **Needs your input** and waits. Review the ads in your ad account (or on the campaign page), then give your go in the reply box on the campaign page — the agent launches.
**Why did the agent ask me to raise the budget?**
Before building anything, the agent checks whether the budget can reach a verdict: roughly 40 conversions within 30 days at your expected cost per result. If it can't — or the budget doesn't buy at least a couple of clicks a day — it builds nothing and asks you on the campaign page: raise the budget to the number it names, switch to a goal that happens more often, or run anyway knowing the honest date.
After launch, if the budget is still too small, the agent sends a "Raise daily budget from X to Y" approval to your [Inbox](/agent/approvals) — once. If that approval stays unanswered or rejected for a week and a verdict is more than 60 days away, the agent pauses the campaign and asks you what to do.
**What if the agent has a question?**
The campaign shows "The agent needs your input" with its questions. Answer in the reply box and the agent picks up exactly where it stopped. The organization owner also gets an email with the agent’s questions and a link to the campaign — and a message in your default Slack channel if Slack is connected. Campaigns waiting for you also show up in the **Needs you** list on Home.
**Whose ad accounts does it use?**
Yours. The agent works inside the ad accounts you connected — spend goes to the ad platforms as usual, and everything it builds is visible in each platform's own ads manager. See [What happens in your ad account](#what-happens-in-your-ad-account).
**What happens to my campaigns if I cancel Paid Ads?**
When the Paid Ads subscription for the workspace ends, each live Managed Campaign is paused on the ad platforms at its next scheduled check (the **Next check** date on the campaign page). Until then it keeps running and spending as set up — so if you want ads to stop right away, press **Pause** on the campaign before you cancel. Nothing is deleted. While the plan is inactive the **Ads** section is locked; once you resubscribe, **Progress** shows "Paused: paid-ads subscription ended" and **Resume** turns the campaign back on.
**I got "You already have … active campaigns" when creating a campaign. What now?**
A workspace can have up to 5 Managed Campaigns at once — paused campaigns and ones waiting for your input count too; archived and failed ones don't. A paused campaign keeps its slot until you delete it. To free a slot, pause a campaign and choose **Delete** from its menu (ads already created stay in your ad account), then create the new one.
# Meta ads automation in Ryze: what the AI agent does on Facebook and Instagram
Source: https://help.get-ryze.ai/paid-ads/meta-ads
What the Ryze agent can read and change in your Meta ad accounts, how approvals work, and how to start on Facebook and Instagram.
Ryze is an AI agent for Meta ads. Once your Meta ad accounts are connected, you can ask about Facebook and Instagram performance in plain language, and the agent can act on your campaigns under the approval settings you choose. It works the same in the Ryze chat and from Claude or ChatGPT through the Ryze connector.
## What the agent does in Meta
* **Answers performance questions:** spend, ROAS, CTR, creatives and ad sets across every ad account your login can reach.
* **Changes campaigns through Meta's official API:** creates campaigns, adjusts budgets, pauses or resumes, and swaps creatives. Changes follow your **Tool approvals** setting, so you decide what needs your sign-off. See [Paid Ads FAQ](/paid-ads/faq).
* **Proposes fixes on its own:** once accounts are connected it checks them several times a day and sends proposed fixes to your [Inbox](/agent/approvals).
* **Runs a campaign end to end:** with [Managed Campaigns](/paid-ads/managed-campaigns) you set a daily budget and a goal; the agent builds its own campaign named "\[Managed by Ryze]", launches it, pauses losers, shifts budget to winners and rotates fresh creatives. Your existing campaigns are never paused, edited or reused.
* **Generates creatives** from a short brief. See [AI Ad Creatives](/paid-ads/ai-creatives).
* **Watches competitors:** live Meta ads from the brands you track. See [Competitor Ads](/paid-ads/competitors).
* **Sends conversions server-side** to Meta with the [Ryze Pixel](/paid-ads/ryze-pixel), if you turn it on.
## What you need
* A Meta Business account with an ad account, and at least **Advertiser** access (**Admin** to allow changes). See [Connect Meta Ads](/integrations/meta-ads).
* The Paid Ads plan: \$89/month with a 7-day free trial, up to 3 workspaces. See [Plans & pricing](/plans/overview).
## Try it
> Which Meta ad sets are spending without conversions this week?
> Which creatives have the best ROAS this month, and which ones are fatiguing?
> Move 20% of budget from the worst ad set to the best one in campaign Spring Sale.
Related: [Google Ads in Ryze](/paid-ads/google-ads) · [Paid Ads overview](/paid-ads/introduction) · [Connect Claude](/claude/connect)
# Web Analytics & Ryze Pixel
Source: https://help.get-ryze.ai/paid-ads/ryze-pixel
One script on your site for first-party web analytics. Optionally forward conversions server-side to Meta, Google Ads, TikTok and GA4.
Ryze Pixel is one script tag on your website. It powers **Web Analytics** — visitors, sources, page speed and events from your own site — and, when you add a destination, forwards your conversions to your ad platforms from Ryze's servers: the Conversions API for Meta, conversion uploads for Google Ads, the Events API for TikTok and the Measurement Protocol for GA4. Server-side delivery survives ad blockers and browser tracking limits, and every destination shows sent versus received counts so you can see what actually landed. Nothing is forwarded until you add a destination yourself.
The pixel lives under **Analytics → Web Analytics** in the sidebar. Web Analytics is included in every Ryze plan — you don't need Paid Ads to use it. On the Shopify CRO plan, [A/B tests](/cro/ab-testing#what-ryze-does) also run through this pixel, so it has to be on your store.
Until the first event arrives, the page shows only the install screen. After that it has four tabs: **Web Analytics** (visitors, page views, sources, countries and devices), **Web Vitals** (page speed from real visitors), **Events** (every event and how it lands on each platform) and **Destinations** (where events are forwarded). Charts cover the last 7 days. If the pixel sees more than one domain, pick one in **All domains** at the top.
## Install the script
The fastest path is **Install → Install with Agent** at the top of the Web Analytics page: the agent checks which CMS is connected (Shopify, WordPress, Webflow or GitHub), places the script tag before `` itself and confirms it is served. If no writable CMS is connected it gives you the exact place to paste it.
A few things depend on your CMS:
* **WordPress** — the agent adds the tag with the Code Snippets plugin. If the plugin isn't installed, the agent installs it, and asks you first.
* **Webflow** — the agent adds the tag to your site's custom code, but publishes the site only with your OK, because publishing republishes everything.
* **GitHub** — the agent commits the tag to your site's code. It goes live after your next deploy.
* **A blog hosted by Ryze** can't run the pixel — it strips script tags. Put the pixel on your main site.
To do it by hand:
The dialog shows your script tag with the workspace's public key in the address (`px.js?key=rz_pk_…`). Copy it as is.
```html theme={null}
```
Don't add `async` or `defer`. The tag loads synchronously on purpose, so [A/B tests](/cro/ab-testing#what-ryze-does) can switch the page before it shows.
On most site builders this goes into the global head or custom code section. On Shopify, add it to `theme.liquid` right before ``; the theme does not run on the checkout and thank-you pages of most stores, so purchases there come from your backend through the server API below.
If your site loads the script some other way (for example through a tag manager) and calls `ryze` before the script has loaded, queue the calls: `window.ryzeq = window.ryzeq || []; ryzeq.push(["track", "lead"]);` The script replays the queue when it starts.
Script attributes: `data-consent="required"` holds every event and cookie until `ryze.consent("grant")` (see Consent); `data-link-domains="checkout.example.com"` keeps the visitor and session across links to another domain, for example a hosted checkout; `data-hash-routing="on"` counts hash changes as page views; `data-track-search="on"` makes a different query string a different page (by default a filter or sort is the same page); `data-autocapture="off"` disables click and form capture; `data-allow-localhost="on"` tracks local development, which is otherwise ignored.
Open your site once. The dialog switches from **Waiting for the first event…** to **First event received**, and the page starts filling.
## What the script captures
Page views, clicks and form submissions are captured automatically as plain interaction events: the click label and link, the form id and submit button text. The script never reads what visitors type and never decides on its own that something was a conversion. Conversions come from `ryze.track` or the server API. Standard ecommerce and lead events are recognized by name and mapped to each platform's standard events:
`page_view`, `view_content`, `add_to_cart`, `add_to_wishlist`, `view_cart`, `remove_from_cart`, `initiate_checkout`, `add_payment_info`, `purchase`, `refund`, `lead`, `complete_registration`, `subscribe`, `contact`, `start_trial`, `schedule`, `search`, `login`.
`refund` takes the `order_id` of the original purchase, the amount returned as `value` with its `currency`, and optionally the returned lines as `contents`. Google Ads receives it as an adjustment of the original conversion (a retraction when the whole order is returned, a restatement otherwise; Google accepts adjustments between 24 hours and 54 days after the purchase), GA4 as a `refund` event. Meta and TikTok have no refund event and receive nothing.
## Identify visitors and track your own events
Once the script is loaded, `ryze` is available on the page.
```js theme={null}
ryze.identify({ email: "jane@example.com", phone: "+14155550100" });
ryze.track("purchase", { value: 129, currency: "USD", order_id: "48213" });
ryze.track("DemoBooked", { plan: "pro" });
```
* `ryze.identify` attaches who the visitor is to the session. It accepts `email`, `phone`, `first_name`, `last_name`, `city`, `state`, `zip`, `country`, `gender`, `birthdate` and `external_id`; every value is normalized and hashed in the browser before it leaves the page, and the more of them you pass the better the match rate on every platform. Pass `country` whenever you know it, it is what turns a local phone number into an international one. Call it as soon as you know who the visitor is: after login, on checkout, after a form submit.
* `ryze.track` sends any event. Use a standard name from the list above to get the platform mapping for free, or your own name for custom events. Custom events show up on the **Events** tab and can be mapped per destination.
## Consent
By default the script starts tracking on load and sets its first-party cookies immediately. If your visitors need to opt in first, add `data-consent="required"` to the script tag: nothing is sent and no cookie is written until you call `ryze.consent("grant")`. Events fired before the grant are held in memory and sent afterwards in order, so a purchase that happens while the banner is open is not lost. `ryze.consent("revoke")` stops tracking, clears the stored identity and removes the Meta cookies. Granular consent works too: `ryze.consent({ analytics: true, marketing: false })` keeps analytics running but captures no click ids, writes no `_fbp`/`_fbc`, and marks every event so it is never forwarded to an ad platform; `sale_of_data: "ldu"` turns on Meta's Limited Data Use for CCPA traffic.
A browser with Global Privacy Control enabled is always treated as revoked and cannot be overridden. Do Not Track is honoured only when you add `data-respect-dnt="on"` to the script tag: it has no legal weight and most browsers have dropped it, so by default it does not cost you conversions. `ryze.reset()` starts a new anonymous visitor on the device, for example on logout, and drops the previous person's hashed identifiers and click ids. `ryze.identity()` returns the current anonymous id, session, Meta cookies and click ids for a page that wants to pass them to its own server. `window.ryzeBeforeSend = (event) => event` lets you edit or drop (return `null`) an event before it is captured.
## Server-to-server purchases
Send purchases from your backend when the browser cannot be trusted to fire them, for example after payment confirmation or for subscription renewals. The secret key is in **Install → Install manually → Server-to-server**. Never ship it to the browser.
```bash theme={null}
curl -X POST https://px.get-ryze.ai/s2s \
-H "x-ryze-key: rz_pk_YOUR_PUBLIC_KEY" \
-H "Authorization: Bearer rz_sk_YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"events":[{"event":"purchase","order_id":"48213","value":129,"currency":"USD",
"user":{"email":"jane@example.com","phone":"+14155550100"},
"contents":[{"id":"sku-1","quantity":1,"item_price":129}]}]}'
```
Every event needs an `event_id`, an `order_id` or a `timestamp` (epoch milliseconds, at most 7 days in the past and one hour in the future); Ryze builds a stable id from them, so a retried webhook counts once. Use `order_id` on every purchase: a purchase that fires both in the browser and from your backend counts once, and Ryze merges the two, keeping the browser's session and click ids and adding your match keys. Optional fields: `anonymous_id`, `session_id`, `fbp`, `fbc` and `click` (as returned by `ryze.identity()`), `ip` and `user_agent` of the buyer (pass them, Meta requires the user agent to accept a website event), `url`, `contents`, `content_ids`, `content_type`, `num_items`, `properties`. The response is `{ accepted, rejected }`; a `400` names the event and the rule it broke, a `429` carries `Retry-After`, and a `5xx` should be retried with the same body, it is safe. Rotate the secret from the same dialog if it ever leaks; the old key stops working immediately.
## Add destinations
Destinations are where events go. Ryze uses the ad accounts already connected under **Integrations**, so connect Meta, Google Ads, TikTok or GA4 there first.
1. On the **Destinations** tab, click **Add destination** and pick a platform.
2. Choose the account and, for Meta and TikTok, the dataset or pixel. **Create new "Ryze Pixel"** lets Ryze create one through the API so you do not touch Events Manager.
3. Events are mapped to the platform's standard events by default. Click **Customize** to change a mapping, send a custom name, or stop sending a specific event.
4. Click **Enable destination**, then **Send test event**. Meta and TikTok accept a test event code so the test never counts as real.
Platforms you've connected but haven't added show **Not set up** with a **Set up** button.
Nothing is forwarded until you add a destination — Ryze never turns one on by itself. If your store already sends the same events to that platform server-side (for example Shopify's Facebook & Instagram or Google & YouTube app, or another Conversions API setup), adding it here too will count purchases twice. Use Ryze as a destination only where nothing else sends server-side events, or switch the other source off.
Per platform:
* **Meta** — Conversions API into a dataset in your ad account. Optional test event code from Events Manager → Test events.
* **Google Ads** — conversion upload with gclid, gbraid and wbraid plus enhanced conversions. Ryze creates the conversion actions it needs. Google only accepts a conversion once its click is six hours old, so uploads run six hours after each event. Click-id uploads work right away. Enhanced conversions (hashed email) stay off until you accept Google's customer data terms once in Google Ads → Goals → Conversions → Settings; until then the destination shows **Customer data terms not accepted**. To send conversions that have no click id, also turn on enhanced conversions for leads in the same place.
* **TikTok Ads** — Events API. Paste the access token generated on the pixel (TikTok Ads Manager → Tools → Events → Data sources → your pixel → Settings → Generate Access Token). One token covers every pixel of the ad account.
* **Google Analytics 4** — Measurement Protocol into your data stream. Paste the API secret from Admin → Data streams → Measurement Protocol API secrets. GA4 sends no delivery receipts, so a sent event means Google accepted the request.
## Reading the tabs
* **Events** — **Events · 24h**, **Conversions sent · 24h**, **Purchases · 24h** and **Identified sessions** (the share of sessions that carry an email or phone) summarize the last day. **By event** lists every event name, its count, how many carry an identified visitor, and how it lands on each enabled destination.
* **Destinations** — **Sent · 24h**, **Delivery rate**, **Received · 24h** and **Time to deliver** at the top; sent, received and a health status per platform; and **Match keys** — the share of events carrying each match key. Click a row for the daily chart, the event mapping and recent deliveries with error codes. If a platform keeps rejecting an event, **Fix with agent** hands the error to the agent.
* Pause a destination with its **Enabled** switch. Events keep collecting; routing resumes when you switch it back on.
## Troubleshooting
* **Waiting for the first event never changes** — check that the script is on the page: the browser console should show a request to `px.get-ryze.ai`.
* **Events come from the wrong domain** — the pixel accepts events from the domain it was set up for: your workspace's website address, or, if none was set, the domain of the first event it received. If that's not the domain you need, email [support@get-ryze.ai](mailto:support@get-ryze.ai).
* **Sent but not received** — open the destination and read the error code on the failed deliveries. Expired tokens and missing permissions are the usual causes; reconnect the integration and retry.
* **Purchases double-count** — pass the same `order_id` from the browser and from the server. If they still count twice on an ad platform, check whether another app or Conversions API setup also sends purchases to that platform (see the note under [Add destinations](#add-destinations)).
# Plans & pricing
Source: https://help.get-ryze.ai/plans/overview
Ryze plans and prices: Paid Ads $89, Agency $279, SEO Starter $129, Traffic Printer $599, and Shopify CRO $1,499 per month — trials, annual billing, credits, upgrades and what each plan includes.
Ryze has five plans. Paid Ads and SEO are separate products — you can run one or both.
| Plan | Price | Best for |
| - | - | - |
| **Paid Ads** | \$89/month | Running Google, Meta, TikTok, LinkedIn and other ad accounts with the AI agent |
| **Agency** | \$279/month | Agencies running Paid Ads for many clients |
| **SEO Starter** | \$129/month | SEO and AI-search content for one website |
| **Traffic Printer** | \$599/month | SEO plus backlinks and off-page authority |
| **Shopify CRO** | \$1,499/month | Done-for-you A/B tests on your store, plus SEO and Paid Ads |
Subscribe, switch, or cancel on **Organization Settings → Billing** — see [Manage your subscription](/billing/manage-subscription). Prices are in USD.
## Trials and annual billing
* **Paid Ads** and **Agency**: 7-day free trial.
* **SEO Starter**: 3-day free trial.
* **Traffic Printer** and **Shopify CRO**: no trial.
* **Annual billing** saves 30% in the first year. After that, the plan renews at 12× the monthly price.
The exact trial length and price are shown before you confirm. What happens when the trial ends, and how to cancel, is explained in the [Billing FAQ](/billing/faq).
## Paid Ads — \$89/month
* AI autopilot for Google, Meta, TikTok, LinkedIn and 50 more integrations
* AI ad creative generation
* Meta Ads Library competitor analysis
* Unlimited ad accounts
* Claude integration
* Chrome extension: AI visibility for any site, 100 sites a month
* 750 credits per month
Covers up to 3 workspaces. See [Paid Ads](/paid-ads/introduction).
## Agency — \$279/month
* Everything in Paid Ads
* Unlimited workspaces — one for every client
* 3,000 credits per month
* [White label](/white-label/branding): your logo, colors, domain and email sender
Built for agencies managing multiple accounts. See [Create a workspace](/workspaces/create-workspace).
## SEO Starter — \$129/month
* Full SEO & GEO optimization
* 90 SEO articles per month
* Content optimized for ChatGPT and AI search
* Keyword research refreshed monthly
* Chrome extension: AI visibility for any site, 100 sites a month
* 750 credits per month
* Mentions (backlinks, guest posts and PR) available as an upgrade — see [Upgrade to Traffic Printer](#upgrade-seo-starter-to-traffic-printer)
See [How SEO works](/seo/how-it-works).
## Traffic Printer — \$599/month
* Everything in SEO Starter
* 50+ high-quality backlinks (DR 30+) per month
* 3 editorial guest posts per month
* 100+ PR placements in magazines cited by ChatGPT
* 1,000 credits per month
* [White label](/white-label/branding): your logo, colors, domain and email sender
Backlinks, guest posts and press releases are only on Traffic Printer. Content Plan, Technical Audit, Keywords & Prompts, AI Visibility, backlink exchange and Blog Studio are in both SEO plans. See [Backlinks](/seo/backlinks).
## Shopify CRO — \$1,499/month
* Done-for-you A/B tests on your store — designed, applied and measured by the Ryze team
* Results on the **A/B Testing** page in the app
* SEO, with Paid Ads switched on for you
This plan isn't self-serve: open **A/B Testing** in the app and click **Talk to us**.
### A/B Testing
**A/B Testing** is in the sidebar of every workspace. On other plans it shows **Unlock**, and clicking it opens a short page about the plan with a **Talk to us** button.
On Shopify CRO, the Ryze team designs each test, puts it on your store and measures it. Tests run through the [Ryze Pixel](/paid-ads/ryze-pixel), so the pixel has to be on your store. To ask for a new test, click **Request an experiment** and describe what you want to test.
Each experiment shows:
* **Page**, **Metric** (added to cart, started checkout or purchased), **Split** and how long it runs.
* **Results** — visitors and conversion rate for each side, **Confidence**, and a verdict: **Winner**, **Loser**, **Inconclusive**, or **Split is off** (the traffic split is uneven, so don't trust the numbers).
* **Variants** — the control and the variant, each with **Open preview**.
For background on running valid tests, see [A/B testing](/cro/ab-testing).
## More than one website
An SEO plan covers one website. When you subscribe with several workspaces, Ryze asks **Which website is this plan for?** — SEO runs on the website you pick.
To run SEO on another site, open its workspace and click **Add SEO for this website** — it's charged at your plan's price, prorated for the current period, and renews and cancels together with your subscription. Extra websites can be added after the trial converts to a paid plan.
**Cancel plan** on an SEO subscription ends SEO for every website on it. To stop SEO for one website only, or to move your SEO plan to a different website, email [support@get-ryze.ai](mailto:support@get-ryze.ai) from your account address and we'll adjust the subscription for you.
Paid Ads covers up to 3 workspaces; for more, upgrade to Agency.
## Upgrade SEO Starter to Traffic Printer
On **Organization Settings → Billing**, click **Unlock Mentions** on the Traffic Printer card. It adds 50+ high-quality backlinks (DR 30+), 3 editorial guest posts and 100+ PR placements every month. The difference is $470/month or $5,640/year for each website on your SEO plan. You're charged today for the rest of the current period; then it renews with your SEO plan and covers all your websites. The amount is shown on the button before you pay.
On the SEO Starter free trial, unlocking Mentions ends the trial and starts your subscription today.
## Credits
The AI agent runs on credits. Your plan adds a credit allowance every billing period, and you can buy more anytime on the **Billing** page.
| Plan | Monthly billing | Annual billing |
| - | - | - |
| **Paid Ads** | 750 / month | 6,000 / year |
| **Agency** | 3,000 / month | 24,000 / year |
| **SEO Starter** | 750 / month | 9,000 / year |
| **Traffic Printer** | 1,000 / month | 12,000 / year |
Annual plans get the whole year's credits at the start of the year. Credits never expire and carry over. See [Credits & Usage](/agent/credits).
## Related
* [Manage your subscription](/billing/manage-subscription)
* [Billing FAQ](/billing/faq)
* [Credits & Usage](/agent/credits)
# Data Processing
Source: https://help.get-ryze.ai/security/data-processing
How we handle and process your data
## We never train on your data
Your ad accounts, campaigns, and reports are **never used to train AI models**. Your data stays private and is only used to power Ryze for you.
## How processing works
Ryze uses trusted third-party AI providers to power the AI agent in the Ryze app, scheduled tasks, reports and content generation, and the tools you call from Claude, ChatGPT or Grok.
**How it works:**
* When you ask Ryze to pull a report or make a change, your request is processed by a third-party AI provider.
* The provider uses your connected account data to generate the response or action.
* These providers do not store your data permanently.
* They do not train their models on your content.
* All processing happens under strict data agreements.
## Ad data
* Google, Meta, Microsoft, LinkedIn, TikTok and most other ad platforms connect through OAuth — we never see your passwords. Some platforms (for example Criteo, StackAdapt, Klaviyo, WordPress and Shopify custom apps) connect with an API key or token you create, and a few site builders without a publishing API (such as Squarespace and Replit) need a login and password. Keys, tokens and logins are stored encrypted, and you can remove any of them on the **Integrations** page.
* Your ad data is never sold, shared with third parties, or used to train AI models.
* Disconnect any integration at any time to revoke access immediately.
## Processing control
You have full control over how your data is processed:
* **Connections:** Control which ad accounts are connected.
* **Disconnect:** Remove any integration at any time.
* **Deletion:** Delete any data at any time.
* **Export:** Request a copy of all your data.
# Data Storage
Source: https://help.get-ryze.ai/security/data-storage
How we protect your stored data
## Security first
We take security seriously to protect your data and keep your experience safe and reliable. Our approach uses multiple layers of protection — much like a bank secures its money with safes, alarms, strict access controls, and monitoring.
## Encryption
**Encryption at rest (stored data protection)**
Stored customer data — including the OAuth tokens, API keys and logins that connect your accounts — is protected with AES-256 encryption, one of the strongest forms of digital security. Think of it like a high-security safe only authorized people can open.
**Encryption in transit (data moving protection)**
When data travels over the internet (logging in, sending a message, pulling a report), we encrypt it using TLS 1.3+. It's like sending a letter in a locked, tamper-proof envelope instead of a postcard.
## Infrastructure protection
**Daily backups**
We back up data every night, so if anything goes wrong we can restore it — a safety net.
**Firewalls and access control**
Security barriers filter traffic and block anything suspicious, like a checkpoint at an airport.
**DDoS protection**
We use industry-leading protection against attacks that try to flood our system with traffic.
**Network restrictions**
Customer data is processed in a secure, isolated environment with restricted access.
## Infrastructure & sub-processors
Ryze runs on enterprise-grade cloud infrastructure from leading providers that are independently audited and certified to international security standards (such as ISO 27001) and reviewed regularly by external auditors.
We rely on a small, vetted set of sub-processors, each operating under strict data-protection agreements:
* **Cloud hosting & database** — stores your account data and encrypted access tokens
* **AI inference** — powers the AI agent in the Ryze app, scheduled tasks, reports and content generation, and the tools you call from Claude, ChatGPT or Grok
* **Monitoring & error tracking** — system health and security alerts
* **Payments** — billing; card details are handled by the payment processor and never stored by Ryze
## Tenant isolation
Every customer's data is isolated at the database level using row-level security. One customer's data is never accessible to another — isolation is enforced by default, not by configuration.
## Monitoring and response
**Automated security monitoring**
We use Sentry to continuously monitor system health. If anything unusual happens, our team is alerted immediately.
**Audit logs**
Every action is recorded — a clear record of who accessed what, when, and why.
**Incident response plan**
If something goes wrong, we follow a structured process to detect, analyze, and respond immediately.
## Access control
**Role-based access control**
Users and administrators only get access to the data they need — nothing more.
**Credential management**
We use secure credential management to protect access keys, ensuring they're encrypted and only accessible to authorized personnel. Most platforms connect through OAuth, so we never see those passwords. The few connections that need an API key or a login and password store them encrypted, and you can remove them on the **Integrations** page at any time.
## Compliance & privacy
* **GDPR and CCPA aligned** — we handle personal data in line with major privacy regulations.
* **Data Processing Agreement (DPA)** — available on request for teams that need one before moving forward.
* **Security documentation** — available on request, covering data handling, access, and infrastructure.
* **Regular security reviews** — we review and update our systems on an ongoing basis.
To request a DPA or our security document, email [support@get-ryze.ai](mailto:support@get-ryze.ai).
## Data retention
**Your control**
Delete any account connection or your entire account at any time.
**Automatic deletion**
If you delete your account, all your data is permanently deleted within 30 days.
**Backups**
We keep encrypted backups for disaster recovery. These are also deleted when you delete your account.
# Security overview
Source: https://help.get-ryze.ai/security/overview
Your data, your control
## Data ownership
You keep full ownership of your ad accounts, connections, and the data they hold. Your campaigns, reports, and account information remain exclusively yours.
We don't claim any rights to your data. It's stored privately, is **never used to train external AI models**, and is never sold or shared with third parties.
The policy is simple on purpose: your data is yours, period.
## Access control
* **Connections:** Google, Meta, Microsoft, LinkedIn, TikTok and most other ad platforms connect through OAuth — we never see your passwords. Some platforms (for example Criteo, StackAdapt, Klaviyo, WordPress and Shopify custom apps) connect with an API key or token you create, and a few site builders without a publishing API (such as Squarespace and Replit) need a login and password. Keys, tokens and logins are stored encrypted, and you can remove any of them on the **Integrations** page.
* **Scoped access:** We request only the minimum permissions each ad platform needs to do its job.
* **Disconnect anytime:** Remove any integration from the **Integrations** page whenever you want; access is revoked immediately.
* **Isolated by default:** Your data is isolated from every other customer at the database level.
* **Deletion:** Delete your data or your entire account at any time. When you delete your account, all your data is permanently removed.
## Your rights
* Access all your data
* Request an export of your data — email [support@get-ryze.ai](mailto:support@get-ryze.ai)
* Delete your data at any time
* Control which accounts are connected
* Request information about how your data is used
For details on how data is stored and processed, see [Data Storage](/security/data-storage) and [Data Processing](/security/data-processing).
# AI visibility tool: how Ryze tracks your brand in ChatGPT, Claude, Gemini and Perplexity
Source: https://help.get-ryze.ai/seo/ai-visibility
See how often ChatGPT, Claude, Gemini and Perplexity name your brand for the questions your buyers ask, who they name instead, and which sites they cite.
AI Visibility shows how AI assistants answer the questions your buyers ask — and whether they name you. Open **Analytics → AI Visibility** in the sidebar. It's part of the SEO plans and opens the **GEO** tab of the [Search Performance](/analytics/performance) page.
## What you need
* **Google Search Console** — without it the whole page asks you to connect it. See [Search Console](/integrations/google-search-console).
* **Google Analytics** — the GEO tab uses it to measure traffic from AI assistants, so the tab stays closed until it's connected. See [Google Analytics](/integrations/google-analytics).
* **Prompts** — the questions to ask. Add them in **SEO → Keywords & Prompts**, on the **Prompts** tab: click **Add** and enter one prompt per line, or use **Suggest prompts**. You can track up to 50 prompts. See [Keywords & Prompts](/seo/keywords).
## Which assistants
Every prompt is asked on **ChatGPT**, **Claude**, **Gemini** and **Perplexity**.
## What you see
* **AI Share of Voice** — your rank among the brands named in answers, and how many answers name you.
* **AI answers naming you**, **Your site cited**, **AI Sessions** and the **LLM Optimization Score** from your latest technical audit.
* **Visibility Over Time** — share of answers naming each brand, one point per run.
* **Visibility by Assistant** and **Coverage by Model** — how you do on each assistant.
* **Rankings** — every brand the assistants named across your prompts.
* **Top Domains** — the sites the assistants linked to while answering.
* **Prompts** — every tracked prompt on every assistant, with score, whether you were cited, and the top brand.
* **AI Traffic**, **AI Chats Traffic** and **AI Landing Pages** — visits from AI assistants, from Google Analytics.
## Keeping it fresh
* **Refresh** — at the top of the page. On the GEO tab it re-asks all your prompts on the four assistants and updates the results.
* **Auto-refresh** — on **Keywords & Prompts**, open **Settings** next to Refresh and pick a schedule: **Off** (refresh only when you press the button), **Weekly** or **Monthly**. Off is the default. Auto-refresh also updates your keyword positions from Search Console.
After each scheduled refresh you get an email digest with position moves and your AI visibility. Turn it off under **Workspace Settings → Notifications** → **Keywords and prompts refreshed** — see [Notifications](/workspaces/notifications).
## Getting named more often
Being named depends on the content AI assistants can find and cite. The agent works on this through your [Content Plan](/seo/programmatic) and [Technical Audit](/seo/optimizations); the Top Domains list shows which sites the assistants trust for your topics.
Video walkthrough: [AI visibility guide](/guides/ai-visibility).
# Backlink Exchange
Source: https://help.get-ryze.ai/seo/backlink-exchange
Reciprocal link building across the Ryze network — as your articles publish, they place relevant partner links from other sites, and those sites link back to you.
Prefer video? Watch the [Backlink Exchange guide](/guides/backlink-exchange).
Backlink Exchange is how Ryze builds links between the sites in its network. As your Content Plan articles publish, Ryze places a relevant link to a partner site inside the body — and that partner's articles place a link back to you. It runs automatically, with no outreach on your end.
## How it works
* **Paced, not on every post.** Ryze adds at most one exchange link for every **3 articles** you publish, so links drip out rather than appearing in every post.
* **One link, buried in real content.** When it does place a link, it's a single outbound link in the **second half** of the article, woven into a sentence that already makes a point — never a "useful resource" footnote, and never in the intro.
* **Only when it genuinely fits.** Most articles get no exchange link at all. Ryze places one only when a real, relevant partner exists — a forced link hurts both sites, so it would rather place nothing.
* **It doesn't touch your own links.** The exchange link is extra — it never counts against or crowds out the article's internal links.
## How partners are matched
Matching is strict. A partner is only picked if a reader of *that specific article* would actually click through to it for more on the topic — an adjacent niche, an alternative they're weighing, or something genuinely useful to the subject.
Ryze **never** matches:
* **Direct competitors** — and once flagged, you're never matched with them again (including the same brand on another domain).
* **Your own other workspaces** — links never bounce around inside your own account.
* **On shared geography or industry alone** — "both in Australia" or "both in finance" isn't relevance.
* **A business you might sell to** — a sales lead is not a link your reader clicks.
## Who takes part
Only live sites take part. A workspace **receives** exchange links when it has:
* an active SEO plan (SEO Starter or Traffic Printer),
* the **Backlink exchange** switch on,
* at least one published article,
* a publishing platform on its own domain — a connected CMS, or Ryze Hosting with a custom domain.
Your own articles **place** links to partners only while **Publishing mode** is **Automatic**. In **Manual** mode you can still receive exchange links, but none are placed in your articles.
Sites that have received fewer links are matched first, so placements spread evenly instead of piling onto a few domains.
**Ryze-hosted blogs on the default address don't take part.** A workspace joins the exchange through a publish target on its own domain — a connected CMS, or Ryze Hosting with a custom domain. Articles on a `*.byryze.com` address neither receive exchange links nor hand them out, so links stay between real sites on their own domains. If you publish to both your CMS and a hosted blog, only the CMS copies are used for links.
## Turning it off
Backlink Exchange is on by default. To opt a workspace out, open **SEO → Preferences → Publishing** and turn off the **Backlink exchange** switch. Ryze stops placing exchange links for that workspace, in both directions.
## Related
Every link Ryze builds, tracked over time.
The articles exchange links are placed in.
# Backlinks
Source: https://help.get-ryze.ai/seo/backlinks
Links from other sites pointing to yours — on Traffic Printer, 50+ a month through Ryze's partner network plus the links earned from guest posts and press, all listed on the Backlinks & PR page.
Backlinks, guest posts and press releases are part of the **Traffic Printer** plan. On SEO Starter the **Backlinks & PR** page shows **Unlock Mentions** — click it to add them to your plan. Content Plan (up to 90 articles per billing cycle), Technical Audit, Keywords & Prompts, AI Visibility, Backlink Exchange and Blog Studio are included in both SEO plans. See [Plans & pricing](/plans/overview).
Backlinks are links from other sites pointing to yours. They're one of the strongest signals search engines use to judge authority, and Ryze builds them for you — you don't run any outreach yourself.
Find them under **Backlinks & PR** in the SEO sidebar, alongside guest posts and press releases.
## Where backlinks come from
Ryze builds backlinks through three channels:
* **Partner network** — Ryze runs a large network of partner sites, which places links back to your pages. This is the main driver — 50+ backlinks a month on the Traffic Printer plan, placed steadily through the month, with no outreach on your side.
* **Guest post placements** — each placed [guest post](/seo/guest-posts) links back to your site.
* **Press syndication** — each [press release](/seo/press) pickup across news outlets is another link.
Every link is recorded as a backlink with its anchor text, referring URL, and the page and keyword it points to.
Separately, [Backlink Exchange](/seo/backlink-exchange) swaps relevant links between sites in the Ryze network — on both SEO plans.
## The Backlinks & PR page
The page header reads **Mentions** — it's the same page as **Backlinks & PR** in the sidebar.
* **Timeline card** at the top — this cycle's press, backlinks and guest posts, with **X of Y live** for each and when they usually land. Press goes out within days; the first backlinks and guest posts land in 1–3 weeks, then more every few days until the cycle closes.
* **Tabs** — **All**, **Press**, **Guest Post** and **Backlinks**.
* **Backlinks** tab columns — **URL (referring)**, **Page (target)**, **Product**, **Keyword**, **Anchor** and **Status**.
* Click a press release or guest post to read, edit, approve or publish it. **Improve Mentions** asks the agent to review your drafts; it asks you before changing anything.
* The gear icon (**Settings**) opens [SEO → Preferences](/seo/preferences), where the **Press releases** and **Backlink exchange** switches live.
You don't need to start anything — placements land on their own through each cycle.
## Tracking authority
Beyond the links Ryze builds, it tracks your overall backlink profile — your **domain rating**, total backlinks, and referring domains over time. Find it under **Analytics → Search Performance**, on the **SEO** tab, in the **Authority & Backlinks** card — see [Search Performance](/analytics/performance).
## Related
Placed articles that also earn links.
Syndicated PR that earns links.
Reciprocal links across the network.
# SEO FAQ
Source: https://help.get-ryze.ai/seo/faq
Common questions about Ryze SEO — articles, publishing, keywords, and off-page.
Up to 90 articles per billing cycle, up to 3 a day on weekdays. Ryze produces only what's still missing for the cycle, and articles are published at a steady daily pace rather than all at once, so your site grows naturally rather than spiking. Move scheduled dates to publish less often or stack several on one day. See [Content Plan](/seo/programmatic#scheduling).
No — Ryze picks them for you from your real data (Search Console, live search data, your store). You can delete keywords you don't want, ask the agent to add new ones, and review and edit any article draft before it goes live. See [Keywords & Prompts](/seo/keywords).
Yes. Open the article and click **Edit** (in the list: **⋯ → Edit / Reschedule**) to change the title, slug, meta, body, image, or scheduled date on the edit page, then click **Save**. Published articles stay editable too: save your edits, then click **Publish edits** on the article page to update the live copy (the slug of a live article can't change). From the **⋯** menu of a published article you can also **Republish**, **Unpublish** or **Delete** it. See [Content Plan](/seo/programmatic#edit-move-or-remove-a-published-article).
Yes. Every article gets an automatic publish date, spread out so your content rolls out steadily. Open a draft, click **Edit**, and change the **Scheduled date** to move it earlier or later — or point several at the same day for a bigger drop. Use **Calendar view** on Content Plan to see the whole schedule at a glance. See [Content Plan](/seo/programmatic#scheduling).
To the platform set in **Publish to** under **SEO → Preferences → Publishing** — Shopify, WordPress, Webflow, Framer, Wix, GitHub, Ryze Hosting and more. Connect one under [Integrations](/integrations/overview) first; without one there's nowhere to publish. See [Content Plan](/seo/programmatic#where-it-publishes).
Ryze retries the publish up to 3 times. After that the article is marked **Failed** with the error — open it from the **Failed** tab and click **Retry**.
Yes. Volume and difficulty come from live search data for your country. Ryze never invents metrics.
On the Traffic Printer plan — yes, with no outreach from you. The main driver is Ryze's **partner network**, which places 50+ backlinks a month, steadily through the month — plus the links earned from [guest post](/seo/guest-posts) placements and [press release](/seo/press) syndication. On SEO Starter, click **Unlock Mentions** on the **Backlinks & PR** page to add them; see [Plans & pricing](/plans/overview). Both SEO plans take part in [Backlink Exchange](/seo/backlink-exchange). See [Backlinks](/seo/backlinks).
On-page is everything on your own site — Content Plan articles and technical fixes. Off-page is everything pointing back to your site — guest posts, press, and the backlinks they earn.
Nothing we build for you is removed when a subscription ends. Backlinks and mentions we place live on third-party sites and are never taken down by us; articles published on your own site are yours outright. The one caveat: those pages belong to the sites that host them, so we cannot guarantee a third party keeps a page up forever. What does stop is new work — new articles, new placements, and replacing links that a host site later drops.
That's intentional. If no blog is selected in the integration settings, Ryze creates a dedicated blog (on Shopify it's called "Articles") so a high article volume stays off your main pages. Prefer your existing blog? Pick it in the blog picker under the CMS integration's settings. Articles are indexed and interlinked by Ryze either way.
Yes. On **SEO → Keywords & Prompts**, open the actions menu on a keyword's row and click **Delete**. To add keywords, click **Explore Queries** or ask the AI Marketer chat, for example "add the keyword soundproof office pod". You can steer future picks through the **Brand** page (Identity and Context). See [Keywords & Prompts](/seo/keywords).
Each link is under **SEO → Backlinks & PR**, on the **Backlinks** tab. Your overall authority over time is on **Analytics → Search Performance**, **SEO** tab, card **Authority & Backlinks**. You don't start anything: on Traffic Printer the first backlinks and guest posts usually land within 1–3 weeks, the press release within days. See [Backlinks](/seo/backlinks).
Content — articles, ad copy, chat — comes in whatever language you brief it in. For articles, set the **Article language** and **Target market** under **SEO → Preferences → Content**. The dashboard itself is English only for now.
# Getting started with SEO
Source: https://help.get-ryze.ai/seo/getting-started
What happens after you start an SEO plan — the short setup chat, why Search Console is required, and how your agent plans and writes your first article with you.
Right after checkout, Ryze opens a short setup chat. It takes a few minutes, and then your agent takes over in the same chat. If you left before finishing, open **Home** and click the **Finish SEO setup** card under **Finish setup**.
## The setup chat
You answer one question at a time, in this order:
A quick question about where you heard of Ryze.
A two-minute video on how Ryze SEO works. Click **I've watched** to go on.
Enter the site you want to grow. Ryze reads it and shows what you sell, your industry and your market. Click **Yes, that's us**, or **No, let me fix it** to correct the details.
Connect [Google Search Console](/integrations/google-search-console) — it's required to continue, because without it Ryze can't see what Google already sends you. Connect [Google Analytics](/integrations/google-analytics) too if you can. No Search Console yet? Add your site at search.google.com/search-console, then connect it here.
Optional. Invited teammates get full access: integrations, chat and Slack. Click **Skip for now** to do it later.
Pick the platform your site runs on and connect it. If none fits, choose **None of these fit** and tell Ryze which platform your site runs on — Ryze then hosts your blog on a Ryze subdomain for now. You can connect your own domain later in [Blog Studio](/seo/preferences#blog-studio).
**Publish automatically** — each article goes live on its scheduled date — or **I'll approve each one**. You can change this later in [SEO → Preferences](/seo/preferences#publishing).
## Your agent takes over
Click the button at the end of the setup, and your agent continues in the same chat:
* It checks your publishing setup.
* It offers a first set of keywords to pick, each with its monthly search volume.
* It asks a few questions about your business and what you want from SEO.
* It plans your first articles from your picks and answers.
* It lets you choose reference images, so article visuals match your brand.
* It writes your first article in your style with a generated cover, shows it to you and asks whether to publish it to your site now.
The agent never publishes, runs an audit or sets up recurring tasks on its own — it asks first, and acts only after you say yes.
## What happens next
You don't need to do anything else. Ryze plans the rest of the month's [Content Plan](/seo/programmatic) and keeps writing and publishing articles on schedule. The [Technical Audit](/seo/optimizations) runs weekly on its own. On the Traffic Printer plan, guest posts, a press release and backlinks start too — see [Backlinks](/seo/backlinks).
Track progress on **Home** — the **When to expect results** timeline and any **Finish setup** steps left. See [Home and Finish setup](/home).
## Related
The full engine, end to end.
A video walkthrough of SEO setup.
# Guest Posts
Source: https://help.get-ryze.ai/seo/guest-posts
On Traffic Printer, Ryze writes 3 guest posts a month for external sites — you review and approve each one, then it's placed to earn a link back to your pages.
Backlinks, guest posts and press releases are part of the **Traffic Printer** plan, which includes 3 guest posts a month. On SEO Starter the **Backlinks & PR** page shows **Unlock Mentions** — click it to add them to your plan. Content Plan (up to 90 articles per billing cycle), Technical Audit, Keywords & Prompts, AI Visibility, Backlink Exchange and Blog Studio are included in both SEO plans. See [Plans & pricing](/plans/overview).
Guest posts are off-page content: articles written to live on other sites and link back to yours. Ryze drafts them for you, you approve, and the placement earns a backlink to your site.
Find them under **Backlinks & PR** in the SEO sidebar, alongside press releases and backlinks.
## How it works
Ryze writes a guest-post draft — body, meta title, and meta description — built around your priority keywords and pages. Open it to read and edit it, or click **Improve This Placement** to have the agent review it.
Click **Approve** on the post. Nothing is sent to a publication until you approve it.
The post is handed to the target publication. It's usually live within 24–48 hours.
The post is live. Its placement link — the live page pointing back to your site — appears under **Target publication**.
If something blocks a post, it's marked **Failed** — open it to see the reason.
## Why they matter
Each placed guest post is a backlink. Backlinks are one of the strongest signals for domain authority — see [Backlinks](/seo/backlinks) for how Ryze tracks them.
## Related
Distributed PR that earns links.
How placements become backlinks.
# AI SEO tool: how the Ryze SEO engine works, from audit to published pages
Source: https://help.get-ryze.ai/seo/how-it-works
The SEO engine, end to end — how Ryze goes from your site data to published articles and backlinks, what each plan includes, and why it runs on a monthly cycle.
Prefer video? Watch the [Setting up SEO guide](/guides/seo-setup).
Ryze SEO is one engine with a clear chain: it learns your site, works out what to rank for, turns that into a plan of content, then produces and ships it. Everything downstream is anchored to the same foundation, so the articles and mentions you get are about the keywords and pages that actually matter for your business.
## The chain
Ryze pulls your data — Google Search Console (the queries and pages you already show up for), live search data (your rankings, top pages, and competitors), and your store (your best products by revenue). This is the ground truth everything else is built on.
From that data Ryze derives keyword seeds for your business — anchored to what you sell and who you sell to — expands them with live search data into real keyword ideas with actual volume and difficulty, and selects the ones worth chasing. See [Keywords & Prompts](/seo/keywords).
Keywords become a plan of article topics, split across seven article types (see below). Each topic lands with a real keyword, volume, and difficulty attached.
Each topic is written into a full article — body, meta, and AI-generated images — with internal links to your own key pages, then published to your store or CMS on its scheduled date. See [Content Plan](/seo/programmatic).
On the Traffic Printer plan, Ryze also produces guest posts and a press release every month and places 50+ backlinks through its partner network. On both SEO plans, [Backlink Exchange](/seo/backlink-exchange) swaps relevant links between sites in the network. See [Guest Posts](/seo/guest-posts), [Press Releases](/seo/press) and [Backlinks](/seo/backlinks).
## Article types
Topics are split across seven article types, so coverage is both focused and broad: **Best-N listicle** (about a quarter of the plan), **Alternatives**, **Vs comparison**, **Segment guide**, **Integration guide**, **Benchmark**, and **Question page** for the rest. Topics come from your keywords, your Search Console queries and pages, your competitors' top pages and your brand profile. See [Content Plan](/seo/programmatic#article-types).
## The monthly cycle
The engine runs on a monthly cycle tied to your billing date. Each cycle Ryze works toward up to 90 articles, and only produces the **deficit** — what's still missing for the cycle — so it doesn't double up on work already done. New articles are spread out across the cycle — up to 3 a day, on weekdays only — rather than dropped all at once.
See the whole plan laid out by day in the [content calendar](/seo/programmatic#content-calendar).
Ryze never invents metrics. Search volume and difficulty come from real, live search data; topics are built from your actual Search Console and store signals.
## Where to go next
How keywords are found and chosen.
From topic to published article.
The agent that ships technical fixes.
How Ryze builds authority off-page.
# SEO overview
Source: https://help.get-ryze.ai/seo/introduction
Ryze runs SEO for you — it audits your site, picks what to rank for, then writes and publishes content every month on autopilot.
Prefer video? Watch the [Setting up SEO guide](/guides/seo-setup).
SEO in Ryze is a content engine that runs on its own. It looks at your site and your search data, decides which pages and keywords are worth winning, then writes articles, publishes them to your store or CMS, and builds off-page mentions — month after month, without you steering each step.
## What it does
* **Audits your site** — pulls Google Search Console, live search data, and your store to see where you stand.
* **Picks targets** — chooses the pages worth ranking and the keywords worth chasing.
* **Writes & publishes articles** — long-tail articles in your [Content Plan](/seo/programmatic), drafted and pushed live to your CMS.
* **Fixes on-page issues** — the [Technical Audit](/seo/optimizations) finds technical and GEO issues, and the agent fixes what your platform lets it change.
* **Builds off-page authority** — on Traffic Printer, guest posts, a press release and 50+ backlinks a month.
## What's included in your plan
Both SEO plans include Content Plan (up to 90 articles per billing cycle), Technical Audit, Keywords & Prompts, AI Visibility, Backlink Exchange and Blog Studio. **Traffic Printer** adds backlinks, 3 guest posts and 1 press release every month. See [Plans & pricing](/plans/overview).
## On-page vs off-page
Ryze works both sides of SEO:
* **On-page** — everything on your own site: Content Plan articles and technical fixes.
* **Off-page** — everything that points back to your site: guest posts, press releases, and backlinks.
## See what the agent is doing
Because the engine runs on its own, you don't need to watch it step by step:
* **Home** shows where your SEO stands — the **When to expect results** timeline, Search performance, AI visibility — and anything that needs your decision under **Needs you**.
* **Content Plan** lists your articles and their status: planned, drafted, published.
* **Technical Audit** shows the fixes, and **Backlinks & PR** shows guest posts, press releases and links.
## Get started
What happens after checkout — the setup chat and your first article.
The full engine, end to end.
How articles get written and published.
What SEO Starter and Traffic Printer include.
# Keywords & Prompts
Source: https://help.get-ryze.ai/seo/keywords
How Ryze finds and chooses the keywords worth chasing, how to add or remove keywords, and how to manage the AI prompts tracked for AI Visibility.
Keywords are what your content is built to rank for. Ryze generates and selects them automatically, grounded in real search data rather than guesswork.
Find them under **SEO → Keywords & Prompts** in the sidebar (the page header reads **Queries** — it's the same page). The page has two tabs: **Keywords** (volume, difficulty, your Search Console position and its trend) and **Prompts** (the questions tracked on AI assistants — see [Prompts](#prompts) below and [AI Visibility](/seo/ai-visibility)).
The row at the top shows **Keywords**, **Avg search volume**, **AI prompts** (n/50) and **AI visibility**.
## How keywords are generated
It's a three-stage pipeline:
Ryze derives a set of seed phrases from your site — what you sell, your industry, and the buyer vertical you serve — the starting points a buyer might search.
Each seed is expanded with live search data into hundreds of real keyword candidates, each carrying actual **search volume**, **difficulty**, **intent**, and CPC. Obvious noise (jobs, salaries, "how to become", PDFs) is filtered out, and very low-volume terms are dropped.
An AI step picks the final set — the keywords most worth chasing.
## How keywords are chosen
The selection isn't "highest volume wins." Ryze weighs, in priority order:
1. **Real volume** — enough search demand to be worth it.
2. **On-topic** — a searcher would recognize your product as the answer.
3. **Commercial intent** — buying-intent keywords beat purely informational ones.
4. **Difficulty** — lower keyword difficulty preferred, so you can actually rank.
5. **Diversity** — no near-duplicate keywords, and no piling onto one head term.
The result is a focused set tied to your business and buyer vertical — quality over raw count.
## Add or remove keywords
* **Remove** — open the actions menu on a keyword's row and click **Delete**. The keyword leaves your list; this can't be undone.
* **Add or explore** — click **Explore Queries** and the agent reviews your current set — coverage, gaps, what's winnable — and suggests new keywords worth adding. It asks before changing anything. You can also just ask in any chat, for example "add the keyword soundproof office pod".
## Prompts
Prompts are the questions your buyers ask AI assistants. During setup Ryze adds starter prompts — 5 topics with 5 prompts each — and you can track up to 50.
* Prompts are grouped by topic. To add more, click **Add**: pick a topic or create a **New topic…**, then enter one prompt per line — or use **Suggest prompts**. Details: [AI Visibility](/seo/ai-visibility).
* To change a prompt, open its **⋯** menu and click **Edit** or **Delete**.
## Keep positions fresh
On the **Keywords** tab, **Refresh** pulls fresh Search Console positions now. On the **Prompts** tab, **Refresh** re-asks all your prompts on ChatGPT, Claude, Gemini and Perplexity — you confirm first. The **Settings** icon next to it sets **Auto-refresh** for both — **Off**, **Weekly** or **Monthly**. After each refresh you get an email digest; you can turn it off in [Notifications](/workspaces/notifications).
Volume and difficulty are pulled live from search data and reflect your workspace's country. Ryze never makes these numbers up.
## Related
The brand context keyword seeds are built from.
How keywords turn into articles.
# Technical Audit
Source: https://help.get-ryze.ai/seo/optimizations
Ryze crawls your site, surfaces the technical and GEO issues holding you back, and the agent fixes what your platform lets it change — with step-by-step instructions for the rest.
Prefer video? Watch the [Technical audit guide](/guides/technical-audit).
Technical Audit checks the technical health of your site — the issues that can block Google and AI assistants from reading and ranking it — and the agent fixes what your connected platform lets it change, with exact instructions for anything else.
Find it under **SEO → Technical Audit** in the sidebar. The audit checks the top 300 pages from your Google Search Console, ranked by impressions — the pages that carry your traffic.
## Scores
* **Health Score** — 0–100 technical health of your site, weighted across SEO, LLM readiness and page speed.
* **SEO Optimization Score** — meta tags, links, sitemap, canonicals.
* **LLM Optimization Score** — llms.txt, AI crawlers, structured data: how well AI assistants (ChatGPT, Claude, Gemini, Perplexity) can read and cite your site.
* **Page Speed Score** — Core Web Vitals from real Chrome users.
Click **What we check** for the full list of checks: llms.txt, JSON-LD schema, robots.txt, sitemap, SSL certificate, meta title and description, broken links, image optimization, page speed and canonical tags.
## Run a scan
The audit runs weekly on its own. Click **Run Scan** to run it anytime — it takes a few minutes, and you can close the page while it works.
## Read the issues
**Issues Detected** lists every problem with its severity — **Critical**, **Warning** or **Notice**. Switch between **Group by page** (each page with its score and issues, plus a row for site-wide checks) and **Group by issue** (each issue with the number of affected pages).
## The audit says "No audit yet" or never finishes
The audit picks the pages to check from your Google Search Console, so connect [Search Console](/integrations/google-search-console) first — without it, Ryze can only fall back to your homepage and sitemap, and the scores don't reflect the pages that carry your traffic. If your site is behind bot protection — Cloudflare Bot Fight Mode or a high Security Level, Wordfence, a web application firewall — the crawler is blocked and pages can't be checked. Lower the protection or allow automated requests to your site, then click **Run Scan**. The audit also runs weekly on its own. See [Crawl errors](/troubleshooting/crawl-errors).
## Fix with the agent
Click **Fix with agent** on a page, an issue or the site-wide row. The agent opens with the task filled in. It first checks what your connected platform lets it change, fixes what it can (for example meta tags, alt text, broken links in content), and gives you exact step-by-step instructions for anything it can't reach — such as robots.txt on WordPress or llms.txt on Shopify. Without a connected CMS you get instructions only. Important issues also show up in the **Needs you** list on Home.
If an issue is known and you accept it, open its actions menu and click **Acknowledge**; **Reopen** brings it back.
## Related
The other half of on-page: content.
Where fixes sit in the engine.
# Preferences
Source: https://help.get-ryze.ai/seo/preferences
Set how your articles are written, illustrated and published — language, length, tone, images, publishing mode and platform — and open Blog Studio.
Open **SEO → Preferences** in the sidebar — the page header reads **Settings**. The gear icon (**Settings**) at the top of Content Plan and Backlinks & PR opens the same page. It has three tabs: **Content**, **Publishing** and **Blog Studio**.
Switches and dropdowns (**Article length**, **Publishing mode**, **Publish to**, **Article language**, **Target market**) save as soon as you change them. **Tone of voice** and **Custom writing instructions** share one **Save** button that appears once you edit them. **Override blog URL** saves when you click outside the field.
## Content
**Language & Region**
* **Article language** — every generated article is written in this language.
* **Target market** — search data and keyword research use this market.
**Writing**
* **Article length** — **Dynamic** (adapts to search intent), 1,200–1,600, 1,700–2,300 or 2,400–2,800 words.
* **Tone of voice** — e.g. "Confident, practical, no fluff".
* **Custom writing instructions** — anything the writer should always do or avoid.
* **Article examples** — reference posts the writer mimics for structure and style.
**Visuals**
* **AI images** — a cover and in-article images for every article. Turn it off to publish without images.
* **Image style** — Photo Realistic, Illustration, Sketch or Watercolor, or **Add your image** so generated images follow your own look.
Who you are, your products and audience live in [Brand](/agent/context), not here.
## Publishing
* **Publishing mode** — **Automatic** (content publishes on schedule; the default) or **Manual** (you publish drafts yourself). In Manual mode your articles don't place [Backlink Exchange](/seo/backlink-exchange) links, but you can still receive them.
* **Publish to** — which connected platform receives your articles.
* **Override blog URL** — only if readers see articles at a different address than the CMS, e.g. `https://www.example.com/blog`.
* **Backlink exchange** and **Press releases** — switches for these Backlinks & PR features. With **Press releases** on, drafted releases are submitted to the newswire automatically. See [Backlink Exchange](/seo/backlink-exchange) and [Press Releases](/seo/press).
* **Publishing platforms** — connect your CMS once and new articles get published for you. See [Integrations](/integrations/overview).
**Can I stop Ryze from creating drafts?** There's no switch that pauses the content plan. Set **Publishing mode** to **Manual** — drafts are still written, but nothing goes live until you click **Publish now**. Delete the planned topics or drafts you don't want, or move their scheduled dates, in [Content Plan](/seo/programmatic#can-i-stop-ryze-from-creating-drafts) — or ask the agent in chat to remove topics for you.
## Change settings from chat
You can also ask the agent in chat to change **Publishing mode**, **Publish to**, the blog URL, the **Press releases** and **Backlink exchange** switches, **Article language**, **Target market** and **Article length** — for example "switch publishing to manual". The agent can also update your **Tone of voice**, **Custom writing instructions**, **Article examples** and brand reference images when you ask. **AI images** and the preset **Image style** are changed on this page.
## Blog Studio
The **Blog Studio** tab opens a separate page for a blog hosted by Ryze — on a free Ryze subdomain or your own domain. It works once [Ryze Hosting](/integrations/ryze-hosting) is connected.
* **Design** — favicon, site name and meta description, theme, colors, fonts, corners and layout. **Match my website style** pulls colors, fonts and header/footer from your live site.
* **Code** — custom HTML and CSS for the head and footer of every blog page, plus switches to hide the built-in header or footer. Scripts and event handlers are removed for security, so analytics tags, ad pixels and chat widgets won't run here. To verify the blog in Search Console, use the **SEO** tab — it places the verification tag in the real page head.
* **SEO** — verify the blog in Search Console, link it from your main site, or turn on **Hide this blog from search engines** (under **Keep this blog out of Google**) if the same articles are also published on your own site.
Video walkthrough: [Blog Studio guide](/guides/blog-studio).
# Press Releases
Source: https://help.get-ryze.ai/seo/press
On Traffic Printer, Ryze writes one press release a month and submits it to a newswire automatically — syndicating to news outlets and earning links back to your site.
Backlinks, guest posts and press releases are part of the **Traffic Printer** plan, which includes 1 press release a month. On SEO Starter the **Backlinks & PR** page shows **Unlock Mentions** — click it to add them to your plan. Content Plan (up to 90 articles per billing cycle), Technical Audit, Keywords & Prompts, AI Visibility, Backlink Exchange and Blog Studio are included in both SEO plans. See [Plans & pricing](/plans/overview).
Press releases are Ryze's PR channel. It writes a release and submits it to a newswire that syndicates to news outlets — each pickup a mention and a link back to your site.
Find them under **Backlinks & PR** in the SEO sidebar, alongside guest posts and backlinks.
## How it works
Ryze writes a press release — title, summary, and body — around your company and a key page.
Open the release to read it. Click **Edit** to change the text or the contact details, or click **Improve This Placement** to have the agent review it.
While the **Press releases** switch (**SEO → Preferences → Publishing**) is on, a drafted release is submitted to the newswire automatically in the nightly run. Click **Publish now** on the release to send it right away.
The newswire syndicates it to news outlets, usually within 24–48 hours after submission. Open the release to see **Published on N sites**.
Editing a draft doesn't hold it back — the nightly run submits every drafted release. To hold a release, turn **Press releases** off in **SEO → Preferences → Publishing** (Ryze keeps drafting but stops sending) or delete the draft.
## Contact details
Open the release and click **Edit**. The **Contact information** card — **Contact name**, **Email**, **Phone**, **Address**, **City** and **State** — is printed in the release's contact block. Check it before the release goes out.
## Restricted industries
The newswire's editors apply stricter rules to certain industries. For clients in those classes — designer-styled physical goods, supplements and wellness, cosmetic or surgical practices, and businesses serving crypto, gambling or cannabis — a ranking-style release ("Top 7 …", "Best … of 2026") is rejected for its format alone, while a plain company announcement about the same business passes review.
Ryze handles this for you: in a restricted class, releases are written as **announcements** — company news such as pricing, delivery terms, standards, or process — rather than rankings, and a release that was bounced for its format is rewritten the same way before it is resubmitted. You don't need to change anything; the draft you review will simply be shaped as an announcement.
## Why they matter
Press pickups generate backlinks across news sites, which strengthens your domain authority. See [Backlinks](/seo/backlinks).
## Related
Placed articles that earn links.
How press and guest posts build authority.
# Content Plan
Source: https://help.get-ryze.ai/seo/programmatic
Long-tail articles written and published for you — how topics are planned by article type, written overnight, edited, scheduled up to 3 a weekday and pushed live to your store or CMS.
Prefer video? Watch the [Writing and editing articles guide](/guides/writing-articles).
Programmatic articles are the core of Ryze's on-page engine: long-tail landing pages, planned from your data, written in full, and published to your CMS. Each one targets a real keyword and points readers toward the pages you want to rank.
Find them under **Content Plan** in the SEO sidebar.
## At the top of Content Plan
Above the article list, Ryze shows cards for anything that needs your attention:
* **Where articles go live** — the platform your articles publish to, with **Open blog**, **Change destination**, **Connect custom domain** and **Turn on auto-publish**. If nothing is connected yet, you see **Connect your blog** instead: articles are being written, but they have nowhere to go.
* **N drafts to approve** — shown when **Publishing mode** is **Manual**. Nothing goes live until you approve the drafts.
* **Recommendations** — **Add brand reference images** and **Add writing instructions**. Both open [SEO → Preferences](/seo/preferences) on the **Content** tab.
* **Problems** — **N articles didn't publish** (open them on the **Failed** tab to see why and publish again) and **N articles published with warnings** (on the **Warnings** tab: the article is live, but the sitemap, page status or image needs a look).
## Article types
Each month's topics are split across seven article types. The type is shown as **Archetype** on the article page:
* **Best-N listicle** — about a quarter of the plan
* **Alternatives**
* **Vs comparison**
* **Segment guide**
* **Integration guide**
* **Benchmark**
* **Question page** — fills the rest of the plan
Topics come from your keywords, your Search Console queries and pages, your competitors' top pages and your brand profile. Each planned topic carries a real keyword, search volume, and difficulty — nothing invented.
## Article statuses
You'll see articles move through states, available as tabs:
| Status | Meaning |
| - | - |
| **Planned** | The topic is planned; the body isn't written yet. |
| **Drafted** | The full article is written and waits for its publish date (or your approval in Manual mode). |
| **Published** | Live on your store or CMS. |
| **Failed** | Writing or publishing hit an error — open the article to see why and click **Retry**. |
The **Failed** and **Warnings** tabs appear only when they have articles in them. **Warnings** lists articles that are live but need a look — see [Publish](#publish).
## How articles get written
You don't need to start anything. Ryze writes each planned article automatically: the nightly run picks up every article whose scheduled date has arrived and writes its body if it isn't written yet. With **Publishing mode** set to **Automatic**, the article is published in the same run; in **Manual** mode it waits as a draft for your approval.
Want a draft sooner? Click **Generate** on a planned article (or **⋯ → Generate now** in the list). The draft is ready in a few minutes, and the article moves to **Drafted**.
Every article includes:
* **Body** — a complete article at the length set in **SEO → Preferences → Content → Article length**: **Dynamic** (adapts to search intent), 1,200–1,600, 1,700–2,300 or 2,400–2,800 words.
* **Meta title** and **meta description** — for search snippets.
* **Images** — an AI-generated cover plus up to 3 in-article images in your chosen **Image style** (**SEO → Preferences → Content → Visuals**). Add reference images there so they match your brand, or turn **AI images** off to publish without images. You can regenerate or replace the cover on the edit page.
## The article page
Click an article to open it:
* **Article score** — a score out of 100 based on 9 checks: **Optimal content structure**, **Internal links**, **External links**, **Statistics data points**, **Image alt texts**, **Semantic keywords**, **FAQ section**, **Optimized meta tags** and **JSON-LD schema**.
* **Details** — **Status**, **Archetype** (the article type), **Primary keyword** and, once published, **Live URL**. The meta title and meta description are edited on the edit page.
* **Search Performance** — published articles show impressions, clicks, CTR and average position from Search Console. In the list, the **Impressions** and **Trend** columns show the same; click **Refresh** at the top of Content Plan to update them.
* **Improve This Article** (on drafts) and **Improve Articles** (at the top of Content Plan, for the whole plan) open the agent. It reviews the articles and asks you before changing anything.
## Edit an article
Open an article and click **Edit** (in the list: **⋯ → Edit / Reschedule**). The edit page has:
* **Title**, and on the right a **Details** card with **Slug**, **Meta title**, **Meta description** and **Scheduled date**.
* **Featured image** — **Replace**, **Remove** or **Regenerate** (describe what should change and the AI reworks the image).
* A visual editor for the body: headings, lists, tables, links, and Ryze blocks from the **/** menu — **TL;DR**, **Stats**, **FAQ**, **Quote**, **Products** (pick products from your store) and **CTA**.
Click **Save** when you're done. You can also just ask the agent in chat to make a change.
To delete an article that isn't published yet, open its **⋯** menu and click **Delete**, then confirm.
### Edit, move or remove a published article
Published articles stay editable in Ryze. Open the article, click **Edit** and save — then click **Publish edits** in the banner at the top of the article page to update the live copy. The slug of a live article can't change; unpublish it first.
From the **⋯** menu of a published article in the list you can also:
* **Republish** — push it again, or move it to another connected platform (optionally removing the old copy).
* **Unpublish** — remove it from your site and return it to drafts.
* **Delete** — remove it from Ryze. The **Also delete from** *your platform* box is ticked, so the live page is deleted too — untick it to keep the page live. On a Ryze-hosted blog the live copy is always removed.
Ryze warns you if live links — from your other articles or from [Backlink Exchange](/seo/backlink-exchange) partners — point to the article. Articles published through a [custom webhook](/integrations/custom-webhook) can't be removed by Ryze — delete them on your site yourself.
## Scheduling
Ryze plans up to 90 articles per billing cycle and gives each one a publish date automatically — up to 3 a day, on weekdays only — so your content rolls out at a steady pace instead of landing all at once.
You control the timing on the article's edit page:
* **Move a date.** Change the **Scheduled date** to publish an article sooner or later.
* **Stack a day.** Point several articles at the same date for a bigger drop — the nightly run publishes everything that's due.
With **Publishing mode** set to **Automatic**, each night Ryze publishes every article whose date has arrived — today or earlier — and lets future-dated ones wait their turn. In **Manual** mode, you publish each due draft yourself with **Publish now**.
### Content calendar
Switch between **List view** and **Calendar view** with the two icons at the top of Content Plan. The calendar shows a **Week** or a **Month**; each card is an article on the day it goes live, colored by status (published, drafted, planned, failed). Click a card, then **View full** to open the article. To change a date, open the article, click **Edit** and change the **Scheduled date**.
### Can I stop Ryze from creating drafts?
There's no switch that pauses the content plan. To stay in control:
* Set **Publishing mode** to **Manual** in [SEO → Preferences](/seo/preferences#publishing). Drafts are still written, but nothing goes live until you click **Publish now**.
* Delete the planned topics or drafts you don't want before their date, or move their scheduled dates.
* Ask the agent in chat to remove topics for you.
## Publish
On a **Drafted** article, click **Publish now**. A dialog lets you choose where this one article goes live — your workspace default is preselected. Ryze pushes it to your connected store or CMS and, once live, resubmits your sitemap in Google Search Console (this needs Search Console connected) and about 30 minutes later checks that the page opens. The article moves to **Published** with a link to the live page.
If the article is live but something needs a look, it shows **Published with warnings** at the top of the article page, with **Resubmit sitemap** or **Check page** to fix it.
### Where it publishes
What gets pushed: the article HTML, meta title and description, slug, excerpt, and the featured image. Connect a platform under [Integrations](/integrations/overview) first — without one, there's nowhere to publish.
| Platform | How it connects |
| - | - |
| **Shopify** | Store domain + authorize the Shopify app, or a custom app's Client ID + Client secret — see [Shopify](/integrations/shopify) |
| **WordPress** | Sign in with WordPress.com/Jetpack, or Site URL + username + application password (self-hosted) — see [WordPress](/integrations/wordpress) |
| **Framer** | Project URL + API key — see [Framer](/integrations/framer) |
| **Wix** | API key + Site ID — see [Wix](/integrations/wix) |
| **Webflow** | Site token + a CMS collection — see [Webflow](/integrations/webflow) |
| **Ghost** | Blog URL + Admin API key — see [Ghost](/integrations/ghost) |
| **GitHub** | GitHub App — publishes article files to a repo — see [GitHub](/integrations/github) |
| **Squarespace** | Site URL + login (Ryze publishes through the blog editor) — see [Squarespace](/integrations/squarespace) |
| **Lovable**, **GoDaddy Airo**, **Base44**, **Replit** | Project link + login (Ryze adds article files and clicks Publish) — see [Lovable](/integrations/lovable), [GoDaddy Airo](/integrations/godaddy-airo), [Base44](/integrations/base44), [Replit](/integrations/replit) |
| **Ryze Hosting** | A blog hosted by Ryze on a free Ryze subdomain or your own domain — see [Ryze Hosting](/integrations/ryze-hosting) |
Ryze also publishes to [HubSpot](/integrations/hubspot), [HighLevel](/integrations/highlevel), [Lightspeed](/integrations/lightspeed), [Magento](/integrations/magento), [BigCommerce](/integrations/bigcommerce), [Duda](/integrations/duda), [Contentful](/integrations/contentful), [Sanity](/integrations/sanity), [Directus](/integrations/directus) and any site through a [Custom webhook](/integrations/custom-webhook). Each page explains how to connect.
### Choose the publish target
With several platforms connected, pick which one receives your articles in **SEO → Preferences → Publishing → Publish to**. The gear icon (**Settings**) at the top of Content Plan opens the same page.
* **Publish to** — the connected platform that receives generated articles. With a single platform connected, it's used automatically.
* **Override blog URL** (optional) — for headless setups (like GitHub) where articles live at a different public address than the CMS itself. Set it and Ryze uses that address for live links, sitemap submission and page checks.
### Manual vs automatic
* **Manual** — you click **Publish now** on each draft.
* **Automatic** (the default) — Ryze publishes drafts on schedule, by their assigned date, at a steady daily pace rather than all at once. Change a draft's date on its edit page.
If a publish fails, Ryze retries it up to 3 times; after that the article is marked **Failed** with the error — open it and click **Retry**. If your platform is busy, publishing is postponed to the next nightly run.
## Related
Technical and GEO fixes shipped by the agent.
Connect a store or CMS to publish to.
# Client Access
Source: https://help.get-ryze.ai/white-label/access
Give clients a login link under your brand and invite them to a workspace — new emails get an account automatically.
The **Access** tab is where you let clients into your branded app. They sign in at your address and see only your brand — never Ryze's.
Find it under **White Label → Access** in your organization settings.
White label comes with the **Agency** and **Traffic Printer** (\$599/month) plans, and clients see your brand only after the owner turns on **Enable white label**. See [Branding](/white-label/branding#turn-it-on).
## Branded login link
Share your branded login URL with clients — they sign in there, under your brand.
When a client opens the link, they get your branded sign-in page.
## Invite clients
Under **Client users**, pick a **workspace** and enter the client's **email**, then **Invite**. If the email doesn't have an account yet, one is created automatically — the client just follows the link and signs in.
Each client belongs to a workspace. Use one workspace per client so their data, brand, and access stay separate. See [Create a workspace](/workspaces/create-workspace).
## Related
Colors and logo across the app.
Your own app domain and email sender.
Add your own team to the org.
# Branding
Source: https://help.get-ryze.ai/white-label/branding
Brand the whole app as your own — set the colors your clients see across the app, reports, and login page, and add your logo.
White label lets an agency brand Ryze as its own. Your clients see your colors and logo across the app, their reports, and the login page — Ryze stays behind the scenes.
Find it under **White Label → Branding** in your organization settings.
White label comes with the **Agency** and **Traffic Printer** (\$599/month) plans. Only the organization **owner** sees the **White Label** section. If you do not see it, check that your organization is on Agency or Traffic Printer under **Billing**.
## Turn it on
The **Enable white label** switch sits at the top of the White Label section. Until it is on, your clients still see Ryze, so you can set up colors, logo, domain, and sender first and switch everything live at once.
Turning it off brings Ryze back for your clients. Your saved colors, logo, and domains stay, and come back when you turn it on again. If the plan that includes it ends, white label turns off the same way.
## Colors
Set three colors and Ryze derives the rest of the theme from them:
* **Primary** — your brand color, used for buttons, links, and accents.
* **Background** — the app's base background.
* **Secondary** — a supporting accent.
These apply everywhere your clients look — the app, the reports you share, and the branded login page.
Click **Save changes** to apply. Updates show up for your clients right away.
## Logo
Upload your logo at the top of the **Branding** tab: click **Upload logo** and pick a PNG, JPEG, or WebP file up to 5 MB. Once white label is on, it replaces the Ryze logo in the app, in the browser tab, on the login page, and in emails.
## Related
Branded login link and inviting clients.
One workspace per client.
# Domains
Source: https://help.get-ryze.ai/white-label/domains
Run the app on your own domain and send client emails from your own address.
Clients can open the app and sign in on your own domain, and get emails from your own address instead of Ryze.
Find it under **White Label → Domains** in your organization settings.
Domains are part of the **Agency** and **Traffic Printer** plans. You can connect them before turning white label on; they start working for clients once **Enable white label** is on. See [Branding](/white-label/branding#turn-it-on).
## App domain
Enter the address you want clients to use, for example `app.youragency.com`, and click **Connect**. Ryze shows the DNS record to add at your DNS provider. Some providers can add it for you in one click.
DNS changes usually apply within minutes, sometimes up to 48 hours. Until the record is found, the card shows **Waiting for DNS**. Ryze checks automatically — or click **Check status** to re-check right away — and the card shows **Live** once the domain works. From then on, your branded login page and the links in client emails use your domain.
## Email sender
Enter the address client emails should come from, for example `reports@youragency.com`, and click **Connect**. Add the DNS records shown on the card at your DNS provider; the card shows **Waiting for DNS** until they're found. Click **Check status** to re-check right away. Once the domain is **Verified**, client emails go out from your address.
Until then, emails still carry your branding and come from a Ryze address.
## Change or remove a domain
To switch to a different domain, click **Remove**, then connect the new one. Removing the app domain sends clients back to the Ryze address to sign in; removing the sender sends emails from a Ryze address again, still with your branding inside.
A domain that is never verified is removed automatically after about two days, so it does not block anyone.
## Messages you may see
| Message | What to do |
| - | - |
| *Use your own domain, not a Ryze one* | Enter a domain you own. For the email sender, use an address on your own domain. |
| *This domain is already connected elsewhere. Remove it there first, then retry.* | The domain is attached to another organization. Remove it there, then connect it again here. |
| *Remove the current one first, then connect the new one.* | You can have one app domain and one sender domain at a time. Click **Remove** on the current one first. |
| *White label is available on the Agency and Traffic Printer plans* | Upgrade to Agency or Traffic Printer to use white label. See [Plans & pricing](/plans/overview). |
| *Only the organization owner can change white label domains* | Ask the organization owner to make the change. |
## Related
Colors, logo, and the white label switch.
Branded login link and inviting clients.
# Create a Workspace
Source: https://help.get-ryze.ai/workspaces/create-workspace
Add a workspace for each client or site. Ryze reads the site to learn the business.
A workspace holds one site or client — its connections, settings, and data. Create one per business you manage.
## Create a workspace
Click the workspace name at the top-left, then choose **Create New Workspace**. Only the organization owner can create workspaces.
Enter a **Name**, the **Domain**, and choose a **Location**, **Language** and **Industry**. Tick **Copy integrations** to reuse connections from your current workspace.
Click **Create workspace**. Ryze reads your site to learn your business, catalog, and market.
## Does a new workspace need its own plan?
Creating a workspace is free. What it can run depends on your plan:
* **Paid Ads** covers up to 3 workspaces. In a fourth you'll see "You've reached the 3-workspace limit" with **Upgrade to Agency** — Agency covers unlimited workspaces.
* An **SEO** plan covers one website. To run SEO in another workspace, open it and click **Add SEO for this website**. It's charged at your plan's price, prorated for the current billing period, and renews with your subscription. Extra websites can be added once your trial has converted to a paid plan.
See [Plans and pricing](/plans/overview#more-than-one-website).
## Switching workspaces
Use the same switcher at the top-left to move between workspaces. Each one keeps its own connections, settings, and data.
## Next steps
Name, slug, domain, location, and language.
Link Google, Meta, Analytics, and more.
# Delete Your Account
Source: https://help.get-ryze.ai/workspaces/delete-account
Permanently delete your organization, all of its workspaces, and cancel every active subscription.
Deleting your account removes the whole organization. Only the organization owner can do this, and it cannot be undone.
## Delete your organization
1. Cancel your subscription first: **Organization Settings → Billing → Cancel plan**. While a subscription is active, the account can't be deleted.
After you cancel, you can delete right away — but deleting ends the subscription immediately, so any paid days left are lost. To use them, wait until the plan's end date, then delete.
2. Open **Organization Settings → General**.
3. Scroll to **Delete account** and click **Delete account**.
4. Type `DELETE` to confirm and click **Delete account**.
You are signed out as soon as the deletion finishes.
## What gets deleted
* Every workspace in the organization: SEO articles, keywords, mentions and backlinks, issues and reports, paid-ads creatives, competitor tracking, brand profiles, analytics, chat history, connected integrations, and scheduled tasks
* Hosted blog domains and the Ryze Pixel data for those workspaces
* White-label domains and the white-label email sender
* Team members' access to the organization
## What stays
* Content you already published to your own site or CMS, and any live ads on your ad accounts
* Your login. You can sign in again and create a new organization at any time
There is no grace period and no restore. If you only want to stop paying, just [cancel your subscription](/billing/manage-subscription).
# Workspaces & team FAQ
Source: https://help.get-ryze.ai/workspaces/faq
Common questions about workspaces and team access.
Open **Workspace Settings → Team**, click **Invite member**, and enter their email. They're added to the workspace right away and get an email with a sign-in link. See [Invite teammates](/workspaces/invite-teammates).
Yes. Create one workspace per client or site — each keeps its own connections, settings, and data. See [Create a Workspace](/workspaces/create-workspace).
No — workspaces are isolated by design, and there's no "super workspace" that spans them. If a set of accounts belongs to the same business, connect them all to one workspace instead. See [Managing Multiple Accounts](/integrations/managing-multiple-accounts).
Use the workspace switcher at the top-left and pick another workspace.
Open **Organization Settings → Workspaces** and click **Delete workspace** on the one you no longer need. This removes its connections, settings and data for good, so double-check you're in the right one. Only the organization owner can delete workspaces, and an organization always keeps at least one, so the last workspace can't be deleted.
To remove someone from one workspace, open **Workspace Settings → Team** and choose **Remove from workspace** next to their name. To remove them from every workspace at once, open **Organization Settings → Users** and choose **Remove from organization**. Only the organization owner sees the remove option, and the owner can't be removed.
Yes. Invite them from **Workspace Settings → Team** as usual. They're added right away, and the workspace appears in their switcher the next time they sign in; the email (check spam) just gives them a sign-in link. Every teammate gets their own login — no need to share passwords.
No — one account handles multiple sites. Create a workspace per site or brand and connect that site's accounts inside it. The property you pick when connecting Search Console or Analytics is only the default; the agent can work across every property on the connected Google login.
Some mail hosts (often Microsoft/Outlook domains) quarantine the one-time code. Check your spam or quarantine folder and mark our emails as not spam, or email [support@get-ryze.ai](mailto:support@get-ryze.ai) from your account address. If you see "No account found with this email.", there's no account under that address yet: click **Sign up instead**, or check which address you registered with. Forgot your password? Click **Sign in with password** → **Forgot password?** → **Send reset code**. See [Sign in and passwords](/workspaces/sign-in).
Nothing is deleted. Ryze signs you in by email only — there's no Google sign-in — so an empty account usually means you used a different email address than the one you signed up with. Sign out and sign in with your original address. If you still can't find your organization, email [support@get-ryze.ai](mailto:support@get-ryze.ai).
Only the organization owner — the person who created the organization — can open **Organization Settings**, manage billing, create and delete workspaces, and remove people. Everyone else is a member of the workspaces they were added to. See [Owner and members](/workspaces/invite-teammates#owner-and-members).
Not from the app. If the owner needs to change, email [support@get-ryze.ai](mailto:support@get-ryze.ai) from the current owner's address.
Workspace name and slug are under **Workspace Settings → Workspace**. The organization name is under **Organization Settings → General**.
# Invite Teammates
Source: https://help.get-ryze.ai/workspaces/invite-teammates
Add team members to your workspace, and see what the organization owner can do that members can't.
Bring your team into Ryze so everyone works in the same place.
## Invite a teammate
Go to **Workspace Settings → Team**.
Click **Invite member** at the top-right.
Type their email and click **Send invite**. They'll get an email with a sign-in link.
They're added to the workspace right away and appear under **Members** — there's nothing to accept. The email just gives them a sign-in link; if the address has no Ryze account yet, one is created for it.
Anyone in the workspace can invite teammates. Only the organization owner can remove people.
Inviting your first teammate adds 200 bonus credits to your organization, once per organization.
## Manage people across the organization
The organization owner can open **Organization Settings → Users** to see everyone with access and choose **Remove from organization** to take someone out of every workspace at once. To remove someone from one workspace only, use **Remove from workspace** in **Workspace Settings → Team**. The owner can't be removed.
## Owner and members
Ryze has two levels of access:
* **Organization owner** — the person who created the organization. Only the owner can open **Organization Settings** (General, Workspaces, Users, Usage, Billing, White Label), manage billing, create and delete workspaces, remove people, set up white label and delete the account.
* **Members** — everyone else. Members work inside the workspaces they're added to — chat, reports, integrations, publishing — and can invite teammates to those workspaces.
There are no other roles. Ownership can't be transferred from the app — if the owner needs to change, email [support@get-ryze.ai](mailto:support@get-ryze.ai) from the current owner's address.
An organization always keeps at least one workspace, so the last workspace can't be deleted.
# Media library
Source: https://help.get-ryze.ai/workspaces/media
Upload your product photos and videos once; the agent picks from them for creatives, articles, and ads.
Open **Media** in the workspace sidebar. It holds the images and videos you upload plus the product photos the agent saved from your site on earlier runs. Everything here can be picked anywhere in the workspace.
## Upload files
Click **Upload** or drag files onto the page. Each file can be up to 20 MB.
* **Images**: JPG, PNG, WebP, GIF, HEIC, AVIF
* **Videos**: MP4, WebM, MOV
Use **Search files** to find a file. Click a file to open it: the window shows its type, dimensions, size and the date it was added, with a **Download** button. You can rename it or add **alt text** there. A short description of what the photo shows (product, colorway, scene) helps the agent choose the right one and is used for search engines when the image lands in an article.
## How the agent uses it
Before it looks anywhere else, the agent checks Media. A photo you put here is treated as the one you want used: for ad creatives it goes in as the hero image or as the reference that keeps your product identical, and for articles it is the first choice for covers and inline images.
If you want creatives built only from your own footage, say so in the chat: "use only the photos in Media, no generated product images". Attaching a specific file with the **+** button in the composer narrows it to that file.
**Brand → Visual** is a different place: it stores your brand colors and fonts, which the agent applies on top of the photos from Media.
## Delete a file
Open the file and click **Delete**. The file is removed from storage and from your brand profile if it's used there; creatives and articles that already rendered with it keep their copy. This can't be undone.
# Notifications
Source: https://help.get-ryze.ai/workspaces/notifications
Choose which emails Ryze sends for a workspace, where approval alerts go, and which emails always arrive.
## Email notifications
Open the account menu at the bottom left → **Workspace Settings** → **Notifications**. Each switch is one type of email for this workspace:
| Email | What it is |
| - | - |
| **Approvals ready** | New findings from your agent that are waiting for your approval. |
| **Articles digest** | A summary of your articles a few times a week: new drafts, failed generations and articles waiting on a CMS connection. |
| **Pixel delivery issues** | An alert when a pixel destination stops accepting events or needs to be reconnected. See [Ryze Pixel](/paid-ads/ryze-pixel). |
| **Keywords and prompts refreshed** | A digest after each scheduled refresh: Search Console position moves and AI visibility for your prompts. See [AI Visibility](/seo/ai-visibility). |
## Approval alerts in Slack or email
To choose who gets pinged when the agent has changes waiting for sign-off, open the **Inbox** (Home → **Needs you** → **View all**) and click **Notifications** at the top. You can send these alerts to Slack channels and email addresses. See [Inbox and approvals](/agent/approvals).
**Also add recipients to this workspace** gives each email address you add a seat in the workspace, with access to everything in it.
## Scheduled tasks
Scheduled tasks send their results to the email addresses and Slack channels listed in each task — add or remove recipients when you edit the task. See [Scheduled tasks](/agent/schedules).
## Other emails
Some emails have no switch, because they carry something you asked for or need to act on:
* the result of each scheduled task or agent run (sent to that task's recipients), and a notice when a scheduled run is skipped
* a managed campaign waiting for your answer
* a report someone shared with you or invited you to
* a team invite
* the competitor digest you subscribed to
* sign-in and password reset codes
* billing emails, such as a welcome email, a failed payment or a canceled subscription
# Workspace Settings
Source: https://help.get-ryze.ai/workspaces/settings
Your profile and password, API keys, and the workspace's name, slug, domain, location and language.
Open the account menu at the bottom left → **Workspace Settings**. The page has four tabs: **Profile**, **Workspace**, **Notifications** and **Team**.
## Profile
Your personal account, the same in every workspace:
* **Full name** — click **Save changes** after editing it.
* **Email** — shown for reference; it can't be changed here.
* **Password** — click **Change**, enter your current password and the new one twice, then click **Update password**. Forgot your password? On the sign-in page click **Sign in with password** → **Forgot password?** and enter the code we email you. See [Sign in and passwords](/workspaces/sign-in).
* **API keys** — keys for your own AI agents. See [Ryze API for agents](/agent-api).
## Workspace
* **Name** — the display name for this workspace
* **Slug** — used in the workspace URL
* **Domain** — the site this workspace covers
* **Location** — the market this workspace targets
* **Language** — the language for generated content
Click **Save changes** when you're done.
## Notifications
Which emails you get for this workspace. See [Notifications](/workspaces/notifications).
## Team
Who has access to this workspace, and **Invite member**. See [Invite teammates](/workspaces/invite-teammates).
## Brand voice
How your brand sounds and looks lives on the **Brand** page. See [Brand](/agent/context).
# Sign in and passwords
Source: https://help.get-ryze.ai/workspaces/sign-in
Sign in to Ryze with a code from your email or with a password, reset a forgotten password, and change it from your profile.
Ryze signs you in with your email address. There is no Google sign-in button — always use the email you signed up with.
## Sign in with a code
This is the default way in.
On the sign-in page, type your email and click **Continue**.
Open the email from Ryze, type the code into **Verification code** and click **Verify**. The code is valid for 1 hour; if you request a new one, use the newest.
Typed the wrong address? Click **Use a different email**.
## Sign in with a password
On the sign-in page, click **Sign in with password**, enter your email and password, and click **Sign in**. To go back to the code, click **Sign in with email code**.
## Forgot your password, or never set one?
The **Forgot password?** link only appears on the password form, so switch to it first.
On the sign-in page, click **Sign in with password**, then **Forgot password?**.
Enter your email and click **Send reset code**.
Enter the code from the email and click **Verify**. Then type a new password (at least 8 characters) in **New password** and **Confirm password**, and click **Reset password**.
This is also how you set your first password if you've always signed in with a code.
## Change your password
If you know your current password, open the account menu at the bottom left → **Workspace Settings** → **Profile**, and next to **Password** click **Change**. Enter your current password and the new one twice, then click **Update password**. See [Workspace Settings](/workspaces/settings).
## Trouble signing in
* **"No account found with this email."** — there's no Ryze account under that address. Check the spelling or which address you registered with, or click **Sign up instead** to create an account.
* **"Invalid or expired code"** — check the digits, or request a new code and use the newest email.
* **No code or reset email?** Check your spam or quarantine folder — some mail hosts, often Microsoft/Outlook domains, hold one-time codes — and mark our emails as not spam. Wait a minute and request the code again. Still nothing? Email [support@get-ryze.ai](mailto:support@get-ryze.ai) from the address you signed up with.
## Related
Your profile, password and API keys.
Common questions about access and teams.