Extension Config


To configure and customize your service plugin, you need to provide important details in the plugin.json configuration file.

Note

If you created your service plugin extension with the CLI, required fields are automatically populated for you.

Configuration Params
baseUristring

Base URL of your SEO implementation. Wix sends API requests to endpoints implemented using this URL.


landingPageUrlstring

Your website's landing page.


quotaEnabledboolean

Whether there is a quota limit in the service. When set to true, include the quota object in responses.


supportedCountryCodesArray<string>

List of countries you support for SEO analysis. 2-letter country code in ISO-3166 alpha-2 format.


upgradeUrlstring

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.

SEO Keyword Suggestions Extension Config
JSON
{ "baseUri": "https://my-keyword-suggestion-app.com/", "landingPageUrl": "https://my-keyword-suggestion-app.com/try-it-now/", "quotaEnabled": true, "supportedCountryCodes": ["US", "CA", "UK"], "upgradeUrl": "https://my-keyword-suggestion-app.com/upgrade-plan/" }
Did this help?

listSuggestedKeywords( )


Important: This is a handler function. Implement it only as part of the service plugin.


This method requests keyword suggestions for a specified phrase. You provide statistical data about the requested keyword and a list of similar keywords so the user can compare the SEO strength of the suggested keywords.

Wix calls this method when a Wix user requests data about a keyword via the SEO page of the Dashboard.

Method Declaration
Copy
function listSuggestedKeywords(
  payload: ListSuggestedKeywordsEnvelope,
): ListSuggestedKeywordsResponse | Promise<ListSuggestedKeywordsResponse>;
Method Parameters
payloadListSuggestedKeywordsEnvelope
Returns
Return Type:ListSuggestedKeywordsResponse | Promise<ListSuggestedKeywordsResponse>
Example of a `data` and `quota` return value @description:
JavaScript
import { seoKeywordSuggestions } from "@wix/marketing/service-plugins"; seoKeywordSuggestions.provideHandlers({ listSuggestedKeywords: async (payload) => { const { request, metadata } = payload; // Use the `request` and `metadata` received from Wix and // apply custom logic. return { // Return your response exactly as documented to integrate with Wix. // Return value example: data: [ { keyword: "ice cream", volume: 550000, difficulty: 100, latestTrends: [ 0.3, 0.2, 0.24, 0.16, 0.2, 0.2, 0.44, 0.36, 0.36, 0.36, 0.24, 0.2, ], searcherIntent: ["TRANSACTIONAL"], }, { keyword: "ice cream near me", volume: 1500000, difficulty: 83, latestTrends: [ 0.66, 0.44, 0.3, 0.3, 0.3, 0.3, 0.54, 0.66, 0.81, 1.0, 1.0, 0.66, ], searcherIntent: ["TRANSACTIONAL"], }, { keyword: "little debbie ice cream", volume: 110000, difficulty: 50, latestTrends: [ 0.0, 0.06, 0.16, 0.07, 0.66, 1.0, 0.16, 0.11, 0.09, 0.07, 0.09, 0.04, ], searcherIntent: ["INFORMATIONAL"], }, { keyword: "ice cream cake strain", volume: 74000, difficulty: 43, latestTrends: [ 1.0, 1.0, 1.0, 0.81, 0.81, 0.66, 0.81, 0.81, 0.66, 0.66, 0.66, 0.66, ], searcherIntent: ["INFORMATIONAL"], }, { keyword: "ice cream places near me", volume: 74000, difficulty: 61, latestTrends: [ 0.44, 0.3, 0.13, 0.16, 0.2, 0.3, 0.36, 0.44, 1.0, 0.66, 0.66, 0.44, ], searcherIntent: ["TRANSACTIONAL"], }, { keyword: "jeni's ice cream", volume: 74000, difficulty: 70, latestTrends: [ 0.67, 0.54, 0.54, 0.54, 0.54, 0.54, 0.67, 0.67, 0.81, 1.0, 0.16, 0.16, ], searcherIntent: ["NAVIGATIONAL"], }, { keyword: "jenis ice cream", volume: 74000, difficulty: 70, latestTrends: [ 0.36, 0.55, 0.45, 0.67, 0.55, 0.45, 0.82, 0.45, 0.67, 0.67, 1.0, 0.82, ], searcherIntent: ["NAVIGATIONAL"], }, { keyword: "rolled ice cream", volume: 74000, difficulty: 49, latestTrends: [ 0.54, 0.54, 0.44, 0.44, 0.54, 0.44, 0.54, 0.54, 0.67, 0.67, 0.81, 0.81, ], searcherIntent: ["INFORMATIONAL"], }, { keyword: "ice cream cake", volume: 60500, difficulty: 71, latestTrends: [ 0.66, 0.54, 0.54, 0.54, 0.66, 0.54, 0.66, 0.66, 0.81, 0.81, 1.0, 0.81, ], searcherIntent: ["INFORMATIONAL"], }, { keyword: "ice cream shop", volume: 60500, difficulty: 48, latestTrends: [ 0.24, 0.24, 0.16, 0.16, 0.3, 0.3, 0.44, 0.24, 0.3, 1.0, 0.16, 0.66, ], searcherIntent: ["COMMERCIAL"], }, { keyword: "museum of ice cream", volume: 60500, difficulty: 80, latestTrends: [ 0.66, 0.54, 0.54, 0.54, 0.66, 0.66, 1.0, 0.66, 0.54, 1.0, 0.66, 0.66, ], searcherIntent: ["NAVIGATIONAL"], }, ], quota: { endDate: "2022-11-05T07:04:35Z", limit: 10, isPaidPlan: false, paidPlan: false, remaining: 9, startDate: "2022-11-04T07:04:35Z", }, }; }, });
Errors
MissingTokenWixErrorclass
OutOfQuotaWixErrorclass
Did this help?