> Portal Navigation:
>
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt
## Resource: Introduction
## Article: Introduction
## Article Link: https://dev.wix.com/docs/api-reference/business-management/marketing/seo/seo-keywords-suggestions-service-plugin/introduction.md
## Article Content:
# About the SEO Keyword Suggestions Service Plugin
__Important:__
- To test an app with the SEO Keyword Suggestions service plugin, please [contact us](https://www.wix.com/support-chatbot?nodeId=25a57397-ccf7-4376-8b74-48d51edf7159&referral=devRels). Our team can add the app to the SEO Setup Checklist flow for testing.
- When developing websites or building apps with Blocks, use [Velo service plugins](https://dev.wix.com/docs/velo/events-service-plugins/about-events-service-plugins-and-the-sdk.md).
As an SEO keyword Suggestions provider, you can integrate with Wix to enable Wix users to optimize their SEO strategy.
The integration is done via an app in the Wix App Market and by implementing the SEO Keyword Suggestions [service plugin](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/service-plugins/about-service-plugin-extensions.md). After the app is installed on a site, Wix triggers a call to your service when specific actions are taken on the site. Refer to each method's description for details about those actions.
Using the SEO Keyword Suggestions service plugin, you can design your app to:
- Enable Wix users to check the SEO strength of a potential keyword.
- Suggest similar keywords to compare SEO strength.
- Provide analysis about the suggested keywords based on search volume and ranking difficulty.
- Update Wix users about remaining credit in their plan.
## Before you begin
It's important to note the following before starting to code:
- This service plugin isn't yet supported by the [CLI](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/wix-cli/about-the-wix-cli-for-apps.md).
::::tabs
:::REST_TAB
## Get started
To enable Wix to communicate with your app:
1. Go to [Extensions](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/about-extensions.md) in your app's dashboard.
1. Click **Create Extension** in the top right corner.
1. Find **SEO Keyword Suggestions** and click **+ Create**.
1. Use the JSON editor to create the extension's configuration file. Configure the parameters by referencing the table below or the **Documentation** section to the right of the editor.
Provide the following configuration for your app:
| Name | Type | Description |
| ----------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `baseUri` | string | **Required.** Base URI where the endpoints are called. Wix appends the endpoint path to the base URI. For example, to call the Get Quota endpoint at `https://my-seo-suggestions/v1/get-quota`, the base URI you provide here is `https://my-seo-suggestions.com`. |
| `upgradeUrl` | string | URL of the page where users can purchase a paid plan. Wix offers a link to this page when you respond with a value of `false` in quota's `paidPlan` property. |
| `supportedCountryCodes` | array | **Required.** List of countries you support for SEO analysis. 2-letter country code in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) format. |
| `quotaEnabled` | boolean | Whether there is a quota limit in the service. When set to true, include the quota object in responses. |
| `landingPageUrl` | string | **Required.** Your website's landing page. |
:::
:::SDK_TAB
## Get started
Follow these steps to begin implementing your service plugin.
### Implementation approach
You can implement this service plugin using a self-hosted deployment. Learn how to [implement a self-hosted service plugin with the SDK and the app dashboard](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md).
### Configure your service plugin
To configure and customize your plugin, you need to provide important information in the service plugin configuration file. You can [configure your plugin in the Wix Dev Center](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md#step-1--add-a-service-plugin-extension-to-your-app). For details, see [SEO Keyword Suggestions Extension Configuration](https://dev.wix.com/docs/rest/business-management/marketing/service-plugins/seo-keywords-suggestions-service-plugin/extension-config.md).
### Define handler functions
Use [`seoKeywordSuggestions.provideHandlers()`](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md#step-4--define-handler-functions) to define the following handler functions that implement your custom business logic. Make sure you define all required functions.
| Function | Required |
|-----------------------------|----------------|
| [`getQuota()`](https://dev.wix.com/docs/rest/business-management/marketing/service-plugins/seo-keywords-suggestions-service-plugin/get-quota.md) | Yes |
| [`listSuggestedKeywords()`](https://dev.wix.com/docs/rest/business-management/marketing/service-plugins/seo-keywords-suggestions-service-plugin/list-suggested-keywords.md) | Yes |
## Code examples
Below is an example for implementing the SEO Keyword Suggestions service plugin in your code.
### CLI: Basic code structure
This is the basic code structure for implementing the SEO Keyword Suggestions service plugin with the Wix CLI:
```js
import { seoKeywordSuggestions } from '@wix/marketing/service-plugins'
seoKeywordSuggestions.provideHandlers({
getQuota: async (payload) => {
const { request, metadata } = payload;
// Add your logic here
},
listSuggestedKeywords: async (payload) => {
const { request, metadata } = payload;
// Add your logic here
}
});
```
### Self-hosted: Basic code structure
This is the basic code structure for implementing a self-hosted SEO Keyword Suggestions service plugin:
```js
import { createClient } from '@wix/sdk';
import { seoKeywordSuggestions } from '@wix/marketing/service-plugins'
const wixClient = createClient({
auth: {
appId: ,
publicKey:
},
modules: { seoKeywordSuggestions }
});
wixClient.seoKeywordSuggestions.provideHandlers({
getQuota: async (payload) => {
const { request, metadata } = payload;
// Add your logic here
},
listSuggestedKeywords: async (payload) => {
const { request, metadata } = payload;
// Add your logic here
}
});
// Implement a router to process all requests
express.post('/plugins-and-webhooks/*', (req, res) => {
wixClient.process(req);
});
```
:::
::::
## Terminology
- **Suggested keywords**: Keywords suggested by your app to compare SEO strength of potential keywords and enable optimization of SEO strategy.
- **Quota**: Details of the plan such as credit remaining in terms of number of searches left, total available searches, and start and end dates of the quota cycle.
## See also
+ [About Service Plugin Extensions](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/service-plugins/about-service-plugin-extensions.md)
+ [Add a Self-hosted Service Plugin With the SDK](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md)
+ [Add Self-hosted Service Plugin Extensions with REST](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-rest.md)