| 开发者 |
surfacedby
alikhallad |
|---|---|
| 更新时间 | 2026年8月19日 06:22 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/llms.txt index of
your posts and pages so AI tools can find your content. Respects
Yoast, Rank Math, AIOSEO, and SEOPress noindex rules.window.sbAi.track() to ship the same data. Attribution holds
from first visit through to purchase, even days later.No. Bot detection runs server-side before the response is sent and adds under 10 ms per bot request. Normal human requests are untouched.
Referral tracking runs only when someone arrives from a confirmed AI tool. Visits from Google, social, or direct links are not logged as AI referrals. For a qualifying visit, the plugin stores the referrer host, request path, event time, a short session nonce, and a pseudonymous visitor ID. Enabled commerce integrations and explicit window.sbAi.track calls can also record conversion details as described under External Services.
Pairing pushes the data the plugin already captures (bots, referrals, conversions) up to the SurfacedBy dashboard, where it lines up next to the AI ranking and citation analytics for your domain. The local features keep working the same way whether you pair or not.
The plugin shows you which bots you are blocking and what that means (training, search indexing, or retrieval). You choose the policy. The plugin never edits your robots.txt.
Yes. Keep Yoast, Rank Math, AIOSEO, or SEOPress for Google rankings, and let SurfacedBy handle the AI side. The llms.txt generator reads noindex and nofollow flags from your existing SEO plugin, so excluded content stays excluded.
Yes, automatically, with no shortcode or checkout edits. Activate
WooCommerce or MemberPress and the plugin starts recording purchases,
subscription renewals, refunds, and signups against the AI source
that drove the customer. For non-WordPress checkouts (headless
Shopify, custom front-ends), call
window.sbAi.track('purchase', { event_id, value, currency }) and
the data lands in the same place.
Yes. SurfacedBy > Settings has a "Track conversions" toggle. Disabling it stops every adapter and the JS API at the source; nothing is logged or forwarded.
Yes. EDD is auto-detected the same way WooCommerce and MemberPress are. Completed payments ship as purchases and refunds ship as separate negative-value rows so partial refunds compose cleanly.
Yes, with one toggle. Enable "GTM bridge" in SurfacedBy > Settings and
the plugin subscribes to dataLayer purchase events and forwards them
to window.sbAi.track('purchase', ...) using the raw GA4 transaction
ID. The dashboard's cross-source dedup pass collapses this row with the
WooCommerce-adapter row keyed by the same order number, so a site
running both does not double-count. The dedicated GTM tag template
(integrations/gtm-tag-template/) is the more flexible option when you
need to forward refunds or custom event types.
Yes. SurfacedBy publishes a per-domain webhook URL plus an HMAC-SHA256
shared secret that signs each delivery. Reveal the secret in the
SurfacedBy dashboard's Tracking page Setup Drawer, then POST events
to https://api.surfacedby.com/api/v1/tracker/webhook/conversions
with the X-SurfacedBy-Site-Id, X-SurfacedBy-Timestamp, and
X-SurfacedBy-Signature: t=<unix>,v1=<hex> headers. The signature
covers <timestamp>.<body> with HMAC-SHA256, matching the outbound
SurfacedBy webhook scheme. Replay window is 5 minutes; the per-Site-ID
rate limit is 100 requests / minute.
Example curl:
curl -X POST https://api.surfacedby.com/api/v1/tracker/webhook/conversions \\ -H "X-SurfacedBy-Site-Id: SB-XXXXXXXXXXXX" \\ -H "X-SurfacedBy-Timestamp: 1715990400" \\ -H "X-SurfacedBy-Signature: t=1715990400,v1=<hex>" \\ -H "Content-Type: application/json" \\ -d '{"event_type":"purchase","event_id":"4821","value":99.99,"currency":"USD","occurred_at":"2026-05-18T12:00:00Z"}'
If you wire multiple sources for the same site (this plugin plus the GTM bridge plus a server-side webhook), SurfacedBy automatically deduplicates by event ID. The strongest source wins (plugin first, then webhook, then JS), and the others appear in the dashboard as "+ N sources" on the surviving row. To make dedup most accurate, use the order number as the event ID across every source so the underlying keys line up.
Yes. Implement
\SurfacedBy\AIVisibility\Conversion\Adapters\ConversionAdapter and
register your class via the surfacedby_aiv_conversion_adapters
filter. Adapters that expose an optional static events_covered()
method will appear in the dashboard's coverage matrix.
Yes. Hook the surfacedby_aiv_api_base filter from a mu-plugin and
return your local URL (for example http://host.docker.internal:8000)
so the plugin sends events to your local backend instead of the
production API. The filter applies to every HTTP call the plugin
makes, including heartbeat and event shipper.
robots.txt and llms.txt are now recorded, so
you can see which crawlers are reading your AI access rules.window.sbAi.track() JavaScript API for custom front-ends and
non-WordPress checkouts (Shopify Hydrogen, headless storefronts).sb_attr attribution cookie so conversions are credited
to the AI platform even days after the original visit.surfacedby_aiv_conversion_adapters filter)
for downstream plugins that want to register additional adapters
without forking.