Selectika AI Commerce

Description

Selectika AI Commerce connects a WordPress or WooCommerce store to your Selectika retailer account. Use it to publish complete product catalogs, place AI recommendation widgets on the storefront, and measure consented commerce activity — without sending customer contact details or payment data to Selectika.

A Selectika account and retailer configuration are required for external features. Every new connection capability starts disabled until you opt in. Product enrichment, AI recommendations and search run in Selectika services outside WordPress.

What merchants get

  • Authenticated, read-only product feeds for simple and variable WooCommerce products.
  • Complete paginated catalog generations; failed builds preserve the previous completed generation.
  • [selectika] shortcode, Selectika Carousel Gutenberg block and Elementor widget.
  • Product, cart and checkout placement, including WooCommerce Cart and Checkout blocks.
  • Consent-aware page, product, cart, checkout and purchase analytics.
  • Optional signed server delivery for WooCommerce payment-complete, cancellation and refund events, with durable retries.
  • Separate native WooCommerce REST connection for AI description approval and writeback through the Selectika dashboard.

WordPress without WooCommerce supports widgets only. Multisite commerce connections are disabled. Bundles, subscriptions, grouped/external products, multilingual, multicurrency and fractional-quantity extensions are not certified by this release. Unsupported catalog product types fail the generation visibly instead of silently dropping products. Recognized WPML/Polylang, currency-switcher and dynamic-pricing integrations disable commerce capabilities and report the unsupported scope in connection diagnostics. Storefront widget placement remains available on ordinary single-site WordPress.

External services

This plugin uses Selectika, https://selectika.com/, to provide product recommendations, search, enrichment and commerce measurement. The following communication is optional and controlled by the connection switches and visitor consent:

  • After visitor consent, the browser loads the Selectika widget loader and optional pixel from https://scripts.selectika.com/. The service necessarily receives normal network information such as the requesting IP address and browser headers. Widgets load components from https://statics.selectika.com/, retrieve retailer settings from https://retailers.selectika.com/, and request enabled recommendations/search features through https://ask.selectika.com/, https://search.selectika.com/ and https://srv.selectika.com/; their requests include retailer ID, product identity, selected action and relevant storefront context.
  • When analytics is enabled and visitor consent is granted, native events include page/product/cart/checkout activity, product and variation identifiers, price, quantity, currency and an event ID. The existing Selectika pixel sends these events to https://data.selectika.com/v1/pixel/track and manages its own visitor/session identifiers. Plugin events do not include checkout addresses, payment details or customer names/emails. Pending native cart events are stored separately from the WooCommerce cart, keyed by a one-way session HMAC and connection generation; they expire after one hour and are pruned by native activity or scheduled cleanup.
  • When catalog export is enabled, Selectika fetches the authenticated feed from this store. The feed contains published product descriptions, identifiers, variants, categories, attributes, images, prices, availability and links. No customer or order data is included in this feed.
  • If server order delivery is enabled, consent recorded during checkout allows a signed order event to https://retailers.selectika.com/. Payloads contain the store/retailer identity, order/refund identifier, time, currency, totals and product lines. They exclude customer contact information, addresses and payment data. Failed deliveries remain in this site’s private database and retry. Delivered event bodies are removed after 90 days; deduplication markers remain until uninstall.
  • Native AI description updates use WooCommerce’s own REST API. Selectika stores the credentials and applies the content approved in the Selectika dashboard. Drafts and the approval workflow are hosted by Selectika.

Service privacy information: https://selectika.com/privacy-policy/#connected-stores
Service terms: https://selectika.com/privacy-policy/#service-terms

Consent integration

No external widget or tracking script is loaded until consent is granted. Connect your consent manager by calling window.selectikaConsent(true) or window.selectikaConsent(false), or dispatch a selectika:consent event with detail { analytics: true/false }. Consent is stored in the first-party session cookie selectika_analytics_consent and is bound to the active connection generation. Reconnecting a different retailer requires fresh consent. When WordPress Consent API is present, the plugin uses the marketing category only when a consent manager has explicitly declared optin/optout behavior. An unconfigured Consent API does not imply consent.

Withdrawing consent clears queued events and reloads the current page to unload already-executed service scripts. Cart contents are retained by WooCommerce. Server order events use the consent recorded on the order at checkout. When server order delivery is enabled, browser purchase commands from both the plugin and shared widgets are suppressed. Native WooCommerce owns add/remove cart conversions; widget attribution is retained under the separate selectika_widget_cart_attribution event instead of duplicating the conversion.

Retailer AI shopping (staging opt-in)

The AI shopping bridge is separate from existing catalog credentials. Configure server-only
SELECTIKA_AGENT_RETAILER, SELECTIKA_AGENT_MCP_ORIGIN and SELECTIKA_AGENT_TOKEN in wp-config.php.
The token must be an explicit commerce credential scoped to this retailer with cart:handoff.
GET /selectika/commerce/review only shows confirmation; POST requires a Woo session nonce, consumes
one ticket and validates native stock/price before adding to the current cart. No payment is taken.
Price/tax settings and variant IDs must pass staging verification before handoffInstalled is enabled.

For WordPress with or without WooCommerce, SELECTIKA_AGENT_DISCOVERY_ENABLED=true enables the
virtual robots.txt link. After verifying real 404 responses, set SELECTIKA_AGENT_VERIFIED_MISSING_DOCUMENTS
to an array drawn from agents.md, llms.txt, llms-full.txt. Only those missing routes are served, late in
template_redirect, as verified plain text from the configured retailer endpoint. Existing physical files
remain the web server’s responsibility and must be updated through the managed installation plan.
Disable these constants to roll back virtual routes; restore physical files only after checking hashes.

Screenshots

Blocks

This plugin provides 1 block.

  • Selectika Carousel Display a Selectika AI product carousel (Shop Similar, Complete the Look, etc.)

Installation

  1. Upload the selectika directory, or install the supplied ZIP using Plugins > Add New > Upload Plugin.
  2. Activate Selectika AI Commerce. Activation alone does not contact Selectika.
  3. Open Settings > Selectika connection. Enter the retailer ID supplied by Selectika, authorize the documented service and enable only the capabilities you need.
  4. Generate a read-only feed token and copy it into the protected Selectika integration settings. The plaintext token is shown once; WordPress retains its authentication hash; the one-time administrator display is encrypted and expires after one minute.
  5. Build the catalog snapshot. Monitor its completion and errors before enabling imports. Use a real system cron to run WordPress scheduled events on stores with low traffic.
  6. Configure visitor consent and, if needed, the analytics publisher ID. Widget placements remain editable under Settings > Selectika.
  7. Description writeback requires a separate WooCommerce REST read/write key for a dedicated appropriately privileged user. Save that key in Selectika, never in shortcode attributes or frontend scripts. Selectika restricts its payload to the selected description field; the native key itself is not field-scoped.
  8. For the full connection, choose Full Selectika WooCommerce extension in the retailer’s Selectika settings. Save the canonical HTTPS store URL, native WooCommerce Consumer Key/Consumer Secret, and the WordPress-generated token under Plugin connection token. Use the matching publisher ID and catalog identity mapping. Then use Verify extension to authenticate the plugin and connect its completed feed. This action does not prove a native description write succeeded.
  9. Optional server order delivery requires one securely generated high-entropy secret of 32 to 256 characters. Enter exactly the same value in WordPress Order signing secret and Selectika Order event signing secret. In WordPress, set the HTTPS endpoint to https://retailers.selectika.com/integrations/woocommerce/{retailer}/events, replacing {retailer} with the URL-encoded retailer ID; enable signed delivery. In Selectika, enable Receive signed order events, save and verify the extension again. WordPress encrypts the signing secret using the site’s authentication salt. No secret or connection generation is automatically copied between systems.
  10. The plugin creates its site UUID and connection generation when the WordPress connection is saved. Verification reads these values; do not invent or manually copy a generation from another store. Ordinary no-change saves keep the generation. Changing retailer/site/identity or disconnecting rotates it and revokes credentials; generate a fresh plugin token, save the matching secrets, re-verify Selectika and obtain fresh visitor consent after such a change.

FAQ

Can I update descriptions without installing this plugin?

Yes. Connect native WooCommerce REST credentials in Selectika. That connection does not change your existing catalog feed or storefront installation.

Which identifier should the catalog use?

Keep the existing retailer mapping. The default is the product slug for compatibility; native product ID is available for new mappings. The feed separately includes immutable product/variation IDs and SKUs. Do not change an existing store’s identity without a matching Selectika migration.

What happens if a feed build fails?

The previous complete generation remains available until expiry. Errors appear in connection diagnostics. Corrupt or expired pages fail explicitly rather than returning an empty successful catalog.

What happens when I deactivate or disconnect?

Deactivation stops owned schedules and preserves settings. Disconnect revokes the feed token and signing secret and changes the connection generation. Merchant products and descriptions are never deleted. Uninstall removes owned settings, feed storage and outbox data.

Can I use manual placement?

Use [selectika action=”sbi” item=”product-slug”] or the existing block/Elementor widget. Components Only mode uses manual placements. Product Pages and Whole Site use the published Selectika placement configuration. Tracking is a separate capability.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Selectika AI Commerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.1.2

  • Directory screenshot polish only: storefront carousel and cart. No runtime behavior change.

1.1.1

  • Publish WordPress.org directory branding, screenshots and public readme polish.
  • Show the Selectika brand mark on connection and placement settings screens.
  • Harden AI shopping discovery/commerce routes for WordPress coding standards.

1.1.0

  • Add the WooCommerce connection, private complete catalog generations and protected feed.
  • Add consent-aware native cart events and signed order delivery with retries.
  • Preserve existing placement identifiers and settings; consolidate renderer defaults.
  • Add modern block metadata and explicit service/capability diagnostics.

1.0.0

  • Initial widget placement implementation.