# ShareCount help center > Reward customers for sharing your product on social. Get more customers and grow your business. This file is an LLM-friendly index of every article on ShareCount's help center. Each section below begins with a heading, a permalink, and the article's plaintext body. Agents may quote or summarize freely. Site: https://www.sharecount.app Updated: 2026-05-31 Primary install snippet:
SDK API (Custom Trigger mode): - window.ShareCount.open(publicKey?): opens the share-to-earn dialog. - window.ShareCount.close(): closes the dialog if open. --- ## Category: Getting started What ShareCount does, how the share-to-earn loop works, and your first widget in five minutes. ### What is ShareCount? https://www.sharecount.app/help/getting-started/what-is-sharecount # What is ShareCount? ShareCount is a share-to-earn widget for SaaS pricing pages. Visitors post about your product on X, we verify the post and read the sharer's follower count, then we hand them a unique, single-use coupon scaled to their reach. ## Why it exists - Word-of-mouth is invisible. Customers who recommend you get nothing back. - ShareCount makes the recommendation a fair trade and makes the reach measurable. ## What you get - An embeddable widget styled to your brand. - Real X post verification (no screenshots). - Unique, single-use coupon codes — real Stripe or Polar coupons, or codes you honor yourself. - Follower-weighted reward tiers. - A dashboard showing reach, impressions, engagements and click-throughs. Try it yourself: we run our own widget on the ShareCount pricing page. Post about us to earn up to 100% off, forever, for the first 100 users. ### How the share-to-earn loop works https://www.sharecount.app/help/getting-started/how-it-works # How the share-to-earn loop works Three things have to happen for a share to count: post, verify, claim. 1. The visitor sees the widget (Inline Bar, Edge Ribbon, or your custom trigger) and opens the share dialog. 2. They enter their email and X handle. We resolve the handle and read their public follower count to pick the right reward tier. 3. They post on X. The composer is pre-filled from your share-message template, with a tracked link and any required mention or hashtags. 4. They come back and tap "I've posted — check now." We scan their recent original tweets for the tracked link and check any required mention/hashtags. If indexing is lagging, we retry once. 5. The coupon appears on screen and lands in their inbox. Shape: SHARE-XXXX-XXXX. If Stripe or Polar is connected, it's a real coupon there too. Rules: - One coupon per X account per campaign — codes can't be passed around. - Codes are single-use and email-locked to the sharer. ### Quick start: your first widget in five minutes https://www.sharecount.app/help/getting-started/quick-start # Quick start: your first widget in five minutes 1. Sign up and run the onboarding wizard. 5 screens: Welcome → Your product → Coupons → Embed → Activate. Asks for product name + URL, optionally connects Stripe/Polar (skip to generate codes locally), and ends at the embed snippet + Stripe subscription checkout. 2. Use the defaults or tune later. Five reward tiers from Sharer (0 followers) to Star (50,000+) and a friendly share-message template — edit on the Reward campaign tab. Brand color, font, logo, copy live on the Appearance tab. 3. Copy the two-line embed snippet from the Embed tab and paste it on your pricing page above the plans. That's the whole integration. 4. Open your pricing page, tap the widget, and post a real test share to verify the loop end-to-end. The code you earn is identical to what your customers will see. No Stripe or Polar key required. ShareCount runs end-to-end with locally generated codes you honor yourself, and you can connect a provider whenever you're ready. ### The founding-100 offer, explained https://www.sharecount.app/help/getting-started/founding-100-explained # The founding-100 offer The first 100 ShareCount customers who share us on X earn up to 100% off — forever. How the discount is calculated: - We read your public follower count and match it to a reward tier. - The top tier is 100% off, applied as a recurring coupon on a real subscription. Not a free plan flag. - Smaller audiences earn smaller recurring discounts; every sharer wins something. Why "forever" means forever: - The discount is a recurring coupon, not a flag. As long as the subscription stays active, the discount applies on every renewal. - You're on a real plan with full feature access; the price just happens to be $0 (or close to it). Cap: 100 founding coupons globally — counted by REDEMPTIONS (active subscriptions started with a founding coupon), not by earns. Slots are only spent when someone actually subscribes. Once 100 founding subscriptions are active, the top tier steps down; the standard tier ladder continues to apply to everyone else. Claim from the ShareCount pricing page — the widget there is the same one you'll install on your own site. ## Category: Installation Three ways to add the widget to your site — Inline Bar, Edge Ribbon, and the Custom Trigger SDK. ### Choose your install method https://www.sharecount.app/help/install/choose-your-method # Choose your install method The same two-line snippet powers every mode. The display mode is set in the dashboard (Appearance > Display mode), so you can switch later without touching your site. ## Inline Bar (default) A friendly bar rendered exactly where you paste the snippet. Auto-sizes to its container, inherits your brand color. Best for pricing pages. ## Edge Ribbon A sticky tab pinned to the top, right, bottom, or left edge of the viewport. Renders into the body, not your container. ## Custom Trigger (SDK mode) Headless — no teaser rendered. You wire up your own button and call window.ShareCount.open() to launch the dialog. When to use each: - Inline Bar: above the pricing table. - Edge Ribbon: landing pages without an obvious slot. - Custom Trigger: when the entry point lives in your own UI (hero CTA, in-app menu, sidebar promo). ## Pasting the snippet on hosted site builders - Webflow: Embed element above the pricing section. - Framer: Embed/Code component on the pricing page. - Squarespace: Code Block above the pricing section. - WordPress: Custom HTML block (use WPCode plugin if your theme strips inline scripts). - Wix: Embed HTML element near the pricing area. - Shopify: Custom Liquid / HTML section in the pricing-page template. - Next.js, React, Vue, Svelte: see the Custom Trigger guide for framework-specific snippets. ### Install method 1: Inline Bar https://www.sharecount.app/help/install/inline-bar # Install method 1: Inline Bar The default install. Two lines of HTML, paste above your pricing table. ```html ``` Replace YOUR_PUBLIC_KEY with the publishable key from your product's Embed tab (sc_pk_…). What renders: - A pill-rounded bar at 100% of its parent's width. - Brand color, font, logo, and teaser text from the Appearance tab. - Lives in a Shadow DOM so host CSS doesn't leak in. Sizing tips: - The bar fills its parent. Wrap it in a max-width container for very wide layouts. - 16–24px of vertical margin tends to land best. The script is async, watches the DOM with a MutationObserver, and mounts every [data-sharecount] node — including ones added via SPA route changes. No re-init needed. ## Rotating the public key Embed tab → Regenerate. The old key stops working the moment you regenerate; paste the new snippet on your site before visitors hit the page, otherwise the widget will simply not render until the new snippet is live. ### Install method 2: Edge Ribbon https://www.sharecount.app/help/install/edge-ribbon # Install method 2: Edge Ribbon A sticky tab pinned to the top, right, bottom, or left edge of the viewport. Always visible regardless of scroll. ```html ``` Same snippet as Inline Bar. Switch mode in the dashboard: Appearance > Display mode > Edge Ribbon, then pick the side. Position behaviour: - Top / Bottom: full-width horizontal tab centred on the viewport. - Left / Right: vertical tab with text rotated, centred on the viewport. Notes: - The ribbon attaches to document.body inside a Shadow DOM. - iOS Safari bottom bar can hide/reveal a Bottom ribbon — prefer Top for mobile. - Fixed-position app shells (chat widgets) can cover the ribbon — pick a different edge or adjust z-index in their CSS. ### Install method 3: Custom Trigger (SDK mode) https://www.sharecount.app/help/install/custom-trigger # Install method 3: Custom Trigger (SDK mode) Headless mode. No teaser is rendered. The embed loads silently and exposes window.ShareCount.open() to launch the share-to-earn dialog over your page. ## Setup 1. Dashboard: Appearance > Display mode > Custom Trigger (SDK). Save. 2. Put the two-line snippet on the page. Theor other inline elements. - Do not strip or rename the data-sharecount attribute. The embed re-scans on every DOM mutation. - One script tag per page. The embed coalesces mounts. - Do not override the script src host. The embed derives the backend origin from its own src. - There is NO JS configuration API. Brand color, fonts, copy, display mode, ribbon side, reward tiers, and the share message all live in the dashboard and load at runtime per public key. ## Choosing the install method - Default: install the Inline Bar immediately above the pricing grid. Canonical placement. - If the user wants a custom CTA (hero button, in-app menu, post-signup nudge): install the Custom Trigger snippet and wire window.ShareCount.open() to their button. Tell the user to switch the dashboard mode to "Custom Trigger (SDK)". - If the user wants an always-visible tab: install the Inline Bar snippet and tell them to switch the dashboard mode to "Edge Ribbon". No code change. ## Inline Bar snippet ```html
``` ## Custom Trigger (SDK) snippet ```html ``` ## React / Next.js ```tsx "use client"; import Script from "next/script"; export function ShareCountMount({ publicKey }: { publicKey: string }) { return ( <> > ); } function ShareCTA() { return ( ); } ``` ## SDK API - window.ShareCount.open(publicKey?) — opens the dialog. Without an argument, uses the first [data-sharecount] node on the page. - window.ShareCount.close() — closes the dialog if open. ## Defensive call (script is async) ```js function openShareDialog() { if (window.ShareCount && window.ShareCount.open) { window.ShareCount.open(); return; } setTimeout(openShareDialog, 100); } ``` ## Where to find the public key Dashboard > Products > (product) > Embed. Key starts with sc_pk_. Safe to commit to a public repository. ## Verify the install 1. Load the page; wait ~1s for the async script. 2. Confirm a node with data-sharecount-mounted="1" exists in the DOM. 3. Inline Bar: a pill-rounded bar should appear inside the mount node. 4. Custom Trigger: typeof window.ShareCount.open === "function". Clicking the user's button opens a modal dialog over the page. ## CSP (Content-Security-Policy) changes ``` script-src 'self' https://www.sharecount.app frame-src https://www.sharecount.app connect-src 'self' https://www.sharecount.app img-src 'self' data: https: style-src 'self' 'unsafe-inline' ``` ## Multiple products on one page Render one [data-sharecount] mount node per product. Pass the specific publicKey to open() when triggering. Dialog iframes are cached per key after first load. ## SPA routing The embed watches the DOM with a MutationObserver and remounts on added nodes. SPA navigations need no re-init. ### Testing your install end-to-end https://www.sharecount.app/help/install/testing-your-install # Testing your install end-to-end 60-second checklist: 1. The widget shows on page load. Inline Bar renders where you put the snippet. Ribbon pins to the edge. Custom Trigger renders nothing. 2. The dialog opens on tap. Backdrop fades in, dialog slides up. 3. The handle resolves. Enter email + a real X handle. Reward tier shows based on follower count. 4. The post composer opens when you tap "Post on X." Required @mention and hashtags are present. 5. The coupon drops when you return and tap "I've posted — check now." Code shape: SHARE-XXXX-XXXX. Email arrives within a minute. Tip: delete your test post after the loop — the coupon is already issued and stays valid. Use a second campaign on the Reward campaign tab if you want to test repeatedly. ## Category: Widget & campaign Appearance, share message, reward tiers, and everything you can tune from the dashboard. ### Brand the widget to look like yours https://www.sharecount.app/help/widget/appearance # Brand the widget to look like yours Every visual the widget shows lives on the Appearance tab. Changes ship instantly. ## Colors - Brand color: drives the teaser bar gradient, the ribbon, the icon badge, the dialog accent. - Accent color: highlights inside the share dialog — tier labels, success chip, the "you earned" badge. ## Fonts Pick from 12 curated web fonts: Inter, Poppins, Roboto, Lato, Montserrat, Nunito, DM Sans, Open Sans, Manrope, Work Sans, Raleway, Plus Jakarta Sans. Loaded on demand with a system-font fallback. Need something else? Email us. ## Logo Upload a square image (PNG, JPG, SVG, WebP) up to 1 MB. 96×96+ tends to look best. Or paste a hosted logo URL. No logo? We render a tinted gift icon. ## Copy - Teaser: one line on the bar/ribbon — e.g. "Share Vellum & earn up to 50% off". - Headline: top of the share dialog. - Subhead: short paragraph that sells the trade. - CTA label: share button text. Default: "Share & earn your code." The widget renders inside a Shadow DOM. Host CSS doesn't leak in; widget CSS doesn't leak out. The Appearance tab has a live preview that mirrors the exact widget visitors see. ### Display modes: Inline Bar, Edge Ribbon, Custom Trigger https://www.sharecount.app/help/widget/display-modes # Display modes: Inline Bar, Edge Ribbon, Custom Trigger Mode is set in the dashboard. The embed snippet is identical across modes — switching mode requires no code change on your site. ## Inline Bar Pill-rounded bar at 100% of its parent's width. Default. Best above pricing tables. ## Edge Ribbon Sticky tab pinned to one viewport edge (Top, Right, Bottom, Left). Always visible. ## Custom Trigger (SDK) No teaser rendered. Your own button calls window.ShareCount.open() to launch the dialog. ## What stays the same - Brand color, accent, font, logo, all copy. - The dialog — every mode opens the same share-to-earn flow. - The embed snippet and public key. Mode reads at runtime per public key. Change it in the dashboard and every embed updates within seconds; no redeploy. ### The share message and required mentions / hashtags https://www.sharecount.app/help/widget/share-message-and-required-tags # The share message and required mentions / hashtags Edit on the Reward campaign tab. ## Template - Keep under 260 characters to leave room for the tracked URL. - The token {url} is where the tracked link is inserted. Example: `Just discovered {ProductName}. Honestly the cleanest way I've seen to do {one-line value-prop}. {url} #buildinpublic` ## Required mention - Optional. Set @yourbrand and any post missing it is rejected with a clear in-dialog message. ## Required hashtags - Up to 5. Checked as whole tokens, case-insensitive. - Missing tag = share rejected; customer edits the post and retries. Tradeoff: each requirement adds friction. Required mention is usually fine; stacking hashtags hurts completion. Start permissive. ### Reward tiers and how follower count picks the discount https://www.sharecount.app/help/widget/reward-tiers # Reward tiers and how follower count picks the discount Tiers convert a sharer's follower count into the right reward. Tune on the Reward campaign tab. Up to 8 tiers per campaign. ## Defaults - Sharer: 0+ followers → 10% off - Rising: 500+ followers → 15% off - Creator: 2,000+ followers → 20% off - Influencer: 10,000+ followers → 30% off - Star: 50,000+ followers → 40% off ## How a tier is picked On handle entry we read the public follower count and pick the highest tier the count qualifies for. Below the lowest threshold? They still get the lowest tier — every genuine share wins something. ## Discount shape - Type: percentage off, or fixed amount off in your campaign currency. - Duration: once (first invoice), repeating (set months), or forever (every renewal). - Per-tier value: each tier has its own discount value. Type and duration are shared across the campaign. Tip: be generous at the top. A 50K+ creator can move more signups in one post than a paid campaign moves all month. ## Category: Coupons How codes are generated, Stripe and Polar connections, manual codes, expiry, and email-locking. ### How coupon codes are generated https://www.sharecount.app/help/coupons/how-codes-are-generated # How coupon codes are generated Shape: SHARE-XXXX-XXXX. Two four-character segments from a look-alike-safe alphabet (uppercase letters and digits, minus I, O, 0, and 1 so characters can't be confused). ## Uniqueness and single-use - Unique across your workspace; we retry on a clash. - Single-use — once redeemed, gone. - Email-locked — bound to the sharer's email; signing up with a different email won't redeem the code. ## At issuance 1. We pick the right reward tier from the sharer's follower count. 2. If Stripe or Polar is connected, we mint the coupon there with the discount and single-use limit. 3. If no provider, we issue the code locally; you honor it manually at checkout. 4. We email the code to the sharer. ShareCount works end-to-end with no provider key — see "Manual codes" for honoring SHARE-XXXX-XXXX at your existing checkout. ### Connect Stripe to ShareCount https://www.sharecount.app/help/coupons/stripe-integration # Stripe: install via the marketplace app or paste a scoped key ShareCount mints real Stripe coupons and promotion codes — the same objects you'd create by hand in the Stripe dashboard, only minted on the fly when a customer earns one. ## Option 1: ShareCount Stripe app (recommended) - Install from the Stripe Apps Marketplace. - On the dashboard Settings tab, choose "Stripe app (one-click)" and complete the install. - No keys to copy; disconnect from inside Stripe at any time. ## Option 2: manual restricted key (rk_…) Click "Create my restricted key on Stripe" under Settings tab → Coupon provider → Advanced / Manual — it opens Stripe with the right scope pre-selected. The four permissions requested are: - Coupons: read & write - Promotion Codes: read & write Nothing else is requested. Paste the resulting rk_… key back into the same form. Encrypted at rest the moment you save; never displayed back in full. ## What gets created at earn-time - A Stripe Coupon with the right percent_off (or amount_off), duration, optional expiry. - A Stripe Promotion Code with max_redemptions=1 and the sharer's email in metadata. - The Promotion Code's "code" is the same SHARE-XXXX-XXXX the customer receives by email. If a Stripe call fails: we still issue the code locally and email it (customer experience preserved). To keep provider records in sync, manually create a matching Stripe coupon and promotion code with the same value, duration, and expiry. Email us if it's happening repeatedly. ### Polar: connecting your organization https://www.sharecount.app/help/coupons/polar-integration # Polar: connecting your organization On the Settings tab → Coupon provider, choose Polar, paste a Polar Organization Access Token (polar_oat_…) scoped to Discounts, and pick the organization. ## What we create in Polar per earned coupon - A single-use discount with the discount type and value from your campaign. - An expiry if you've set "Coupon expiry (days)" on the Reward campaign tab. - The Polar object's code matches the SHARE-XXXX-XXXX the customer sees in their email. ## Where the token lives - Encrypted at rest. - The organization slug is shown back to you for confirmation. - Rotate the Organization Access Token any time in your Polar dashboard and re-paste. If Polar's API is unreachable, we still issue and email the local code. Create a matching discount in Polar manually to keep records in sync, or email us if it's recurring. ### Manual codes: honoring SHARE codes at your checkout https://www.sharecount.app/help/coupons/manual-codes # Manual codes: honoring SHARE-XXXX-XXXX at your own checkout ShareCount works with no provider key. Codes are still issued and emailed; you decide how to honor them. ## Patterns - Create a matching coupon in your billing tool; reconcile its redemption report against the ShareCount Customers list. - Apply a manual discount at signup. Have support watch the inbox for "I have a code" (customers can also reply to the issuance email). - Build a redemption form on your site and have your team convert the code. You don't lose analytics by going manual — every issued code, email, tier, post URL, and reach metric still appears in your dashboard. ### Expiry, email-locking, and one-per-account https://www.sharecount.app/help/coupons/expiry-email-locking-and-single-use # Expiry, email-locking, and the one-coupon-per-account rule Three rules keep the loop honest. None are configurable per-coupon. ## Single-use Every code is redeemed exactly once. After redemption the code is invalidated; subsequent attempts fail at checkout. ## Email-locked At earn-time we bind the code to the email entered in the share dialog. At redemption time, the checkout email must match. Stops codes being passed around while still letting the original earner use it freely. ## Expiry Default: never expires. You can set "Coupon expiry (days)" of 1–365 on the Reward campaign tab — flows through to Stripe/Polar, where it's enforced at the provider too. ## One per X account, per campaign The same X handle can only earn one coupon per campaign. Returning sharers see their existing code, not a new one. Prevents duplicates and keeps the returning experience friendly. ## Category: For your customers Articles you can share with end-users — how to claim a code and what to do if something goes wrong. ### How to share and earn your coupon https://www.sharecount.app/help/for-customers/how-to-share-and-earn # How to share and earn your coupon (customer-facing) You're a couple of taps from a real discount. What happens: 1. Tap the share widget (usually above the pricing table). A dialog opens in front of the page — no redirect. You stay on the same tab. 2. Enter your email and X handle. We use the handle to confirm the post is yours; we use the email to send the code and to lock it to you. 3. Post on X. We pre-fill the message and link; you can edit the wording but keep the link. Tap "Post on X" — the X composer opens in a new tab with everything filled in. 4. Come back and tap "I've posted — check now." We scan your recent posts. If X's search is catching up, wait a few seconds and tap again. 5. Save your code. A unique SHARE-XXXX-XXXX code appears on screen and arrives by email. Tier is shown on the same screen — bigger audiences earn bigger discounts. Tip: the pre-filled message is yours to edit. Keep the link. Any required @mention or hashtags are shown before you post. ### Using your coupon at checkout https://www.sharecount.app/help/for-customers/using-your-coupon # Using your coupon at checkout (customer-facing) Your SHARE-XXXX-XXXX code is single-use and locked to the email you used when you earned it. ## Where to enter it - "Add coupon" or "Promo code" field at checkout. - The signup email must match the email you received the code at. ## If rejected - Already used: codes are single-use. Contact the product's support. - Expired: the product's support team can confirm whether your code has an expiry and when. - Wrong email: signup email must match issuance email. Lost the email? Check spam. Subject is "Your [product name] reward: SHARE-XXXX-XXXX"; sender is hello@sharecount.app. Otherwise, the product's support team can look it up by email or X handle. ### I’m having trouble sharing — what to try https://www.sharecount.app/help/for-customers/i-have-a-problem-sharing # I'm having trouble sharing — what to try (customer-facing) ## "We couldn't find your post" - X can take a few seconds to make a new post searchable. Wait, tap "I've posted — check now" again. - Make sure you posted from the X account whose handle you entered. - Make sure the post is public, not protected. - Don't delete the post before tapping "I've posted — check now". ## "Your post is missing @something or #something" Some campaigns require a specific @mention or hashtag. Edit your post to include it (or delete and re-post), then tap "I've posted — check now" again. ## "That X account has already claimed" One coupon per X account per campaign. Check the email you used when you earned it — your code is there. ## The dialog won't open A privacy extension or strict tracker blocker can interfere. Try a different browser, or pause your blocker for this site. Email support@sharecount.app if it persists. ## Category: Analytics Reading reach, impressions, top sharers and the daily chart. ### Reading the analytics dashboard https://www.sharecount.app/help/analytics/reach-impressions-engagements # Reading the analytics dashboard Tip: new products start empty. Tap "Load sample data" on the Overview tab to populate the dashboard with simulated shares from playful handles (demo_dana, vibe_vera, etc.) — useful for previewing each chart/tile and sense-checking your tiers before real traffic. Easy to spot; email support@sharecount.app if you want the sample data cleared. ## The four KPIs - Reach: sum of follower counts across every sharer who earned a code. Upper bound of who could have seen the share. - Impressions: sum of post views, read from X at verification time. - Engagements: likes + reposts + replies across every verified share. - Conversion: issued coupons ÷ widget views. 10–30% is healthy; 50%+ on aligned audiences. ## The funnel Four-step funnel on the Analytics tab so you can spot drop-off: 1. Saw the offer — widget views. 2. Started sharing — opened the dialog and entered an email + handle. 3. Posted on X — actually posted (whether or not we've verified yet). 4. Earned a code — share verified and coupon issued. ## 30-day chart Daily totals for shares, impressions, and conversion. Hover any day for exact totals. Note: impressions are captured at verification time and not re-fetched, so a share that goes viral later will under-count in the dashboard. Read the post on X for the live number. ### Top sharers and click-throughs https://www.sharecount.app/help/analytics/top-sharers-and-click-throughs # Top sharers and click-throughs Every share gets a tracked /r/… landing URL. We count click-throughs from X and surface top performers on the Top sharers panel. ## Panel contents - Sharer's X handle, tier, link clicks, post impressions at verification. - Sorted by follower count by default; re-sortable by clicks or impressions. - Tap a row to open the post on X. Interpretation: reach is potential, clicks are real. High-reach low-clicks = misalignment between message and audience. Low-reach high-clicks = great signal; find more sharers like that. ## Category: Billing & pricing Pricing explained, the founding-100 offer, the money-back guarantee, and cancellations. ### Pricing, explained https://www.sharecount.app/help/billing/pricing-explained # Pricing, explained ShareCount is $14.99 per product per month. No seats, no usage tiers, no per-coupon fees. ## What counts as a product A product is a website or SaaS app you embed the widget on. Two SaaS apps = two products. Add as many as you like; each is billed separately on the same subscription. ## Included on every product - The embed (Inline Bar, Edge Ribbon, Custom Trigger). - X post verification and follower-based tiers. - Unique, single-use coupon codes. - Stripe + Polar (or manual codes). - Custom share message, required mention/hashtags, expiry. - Analytics, customer log, reach metrics. - Unlimited shares and coupons. First 100 customers who share ShareCount on the pricing page earn a recurring coupon worth up to 100% off — see the founding-100 article. ### The founding-100 offer (billing details) https://www.sharecount.app/help/billing/founding-100-offer # The founding-100 offer (billing details) The founding-100 offer is a real coupon on a real subscription — not a free-plan flag. ## How it's applied - You earn the coupon by sharing ShareCount on X via our widget on our pricing page. - At checkout, paste the coupon and start your subscription. Discount applies to every renewal while the subscription is active. - Reward tier reads your follower count at share-time. Top tier = 100% off, forever. ## What stays true - Full access to every feature, every product, every integration. - Cancel anytime from the dashboard. - 7-day money-back guarantee applies like any other subscription. ## When the 100 close The cap counts REDEMPTIONS, not earns — a slot is only spent when a founding coupon actually starts a subscription. Once 100 founding subscriptions are active, the headline tier steps down. Anyone who already redeemed keeps their original discount as long as the subscription stays active. Real plan, real receipts: monthly invoice with the discount line item shown, total $0 (or low). ### Cancellations, the money-back guarantee, and refunds https://www.sharecount.app/help/billing/cancellations-and-refunds # Cancellations, the money-back guarantee, and refunds Cancel anytime from the Billing tab in your dashboard. Access continues until the end of the paid period. ## Money-back guarantee 7-day no-questions money-back guarantee. Email support@sharecount.app from the account email within 7 days and we'll refund in full. ## Issued coupons after cancellation - Coupons already issued remain valid until expiry or redemption. - New shares stop as soon as the subscription lapses — widget silently doesn't render until the subscription is current again. - Re-subscribe later and your campaign and settings are right where you left them. ## Category: Trust & safety What data we collect, how we use X, and how we keep the share-to-earn loop fair. ### What data we collect (and why) https://www.sharecount.app/help/trust-and-safety/what-data-we-collect # What data we collect (and why) ShareCount keeps the data set small on purpose. ## From the customer earning a code - Email address — send the coupon, lock it to them. - X handle — confirm the post is theirs. - Public follower count at share time — pick the right tier. - Post URL and metrics — verify the share and power reach/engagement analytics. ## From the merchant - Account email and workspace name. - Campaign settings (share message, tiers, expiry, mentions/hashtags). - Provider connection state. Stripe/Polar API keys are encrypted at rest; never displayed back in full once saved. ## Retention Shares and coupon records persist as long as your workspace exists. Deleting a campaign detaches share records but retains them for history. Full deletion: email support@sharecount.app. We never sell or rent customer data. Sharers' emails are never used for marketing other than the coupon email. ### How we use X (Twitter) data https://www.sharecount.app/help/trust-and-safety/how-we-use-x # How we use X (Twitter) data ShareCount uses X's public API to verify shares and read follower counts. We never ask for an X password and never read DMs, drafts, or anything not visible on a public profile. ## What we read - A handle's public follower count at share time. - The handle's recent original tweets (excluding retweets/replies) — only as needed to find the tracked share link. - Public engagement metrics on the verified post: likes, reposts, replies, impressions, bookmarks. ## What we never do - We don't post on a customer's behalf. - We don't read DMs, drafts, or protected accounts. - We don't store an X access token — customers post via the X composer themselves; we never get one. Why this is safer: customers never enter X credentials anywhere. Even if ShareCount were compromised, no X account is at risk. ### Fairness and anti-abuse https://www.sharecount.app/help/trust-and-safety/fairness-and-anti-abuse # Fairness and anti-abuse ## Built-in protections - Single-use codes — each coupon redeemed exactly once. - Email-locked codes — checkout email must match earn-time email. - One coupon per X account per campaign — even across different emails. - Real post verification — post must exist on X with the tracked link and any required mention/hashtag. - Public-only follower data — read live, never self-reported. ## What to do about a bad-faith share - Customers tab shows the sharer's email, X handle, post URL, and issued code for every share. - Delete or disable the corresponding coupon directly in your provider (Stripe / Polar) so it can't be redeemed. - Email support@sharecount.app with the share. We'll invalidate it on the ShareCount side and add the X handle to a block list so the account can't earn another code. ## SRI note We don't document a Subresource Integrity hash for embed.js because the script is intentionally a live asset — when we ship a security/behavior fix, every embed picks it up automatically. If your environment requires SRI, email us about a pinned-version arrangement. ## Category: Troubleshooting Fixes for the most common bumps — widget not showing, post not detected, coupon not working. ### The widget isn’t showing on my page https://www.sharecount.app/help/troubleshooting/widget-not-showing # The widget isn't showing on my page In order: 1. Public key is correct. Starts with sc_pk_. No surrounding whitespace. 2. Script loaded. DevTools > Network, filter embed.js — 200 from www.sharecount.app. CSP is the usual blocker; see the Custom Trigger article for the policy template. 3. Mount node present. DevTools > Elements, search data-sharecount. Must exist, not nested in, gains data-sharecount-mounted="1" after ~1s. 4. Display mode isn't Custom Trigger. Custom Trigger renders nothing by design — flip to Inline Bar or Edge Ribbon on the Appearance tab. 5. The product is live. Campaign active on Reward campaign tab, subscription current on Billing tab. Still stuck? Email a link to the page and the dashboard product name. ### “We couldn’t find your post” — what’s happening https://www.sharecount.app/help/troubleshooting/post-not-detected # "We couldn't find your post" The verification step scans the sharer's recent original tweets for the tracked link. Common causes: 1. Indexing lag. X takes a few seconds (sometimes longer) to index a fresh tweet. We retry once automatically; if it still misses, tap "I've posted — check now" again. 2. Handle and post don't match. A customer with handle @alex posting from a different account won't verify. 3. Post is protected or deleted. We see only public posts. 4. Required mention/hashtag missing. The dialog calls this out; the customer edits and re-posts. 5. Post is a reply or retweet. Verification scans original tweets only — encourage a new post. ### A coupon was rejected at checkout https://www.sharecount.app/help/troubleshooting/coupon-rejected-at-checkout # A coupon was rejected at checkout Three checks: 1. Signup email matches earn-time email. Codes are email-locked. 2. Code hasn't already been used. Single-use. Customers tab shows redemption state. 3. Code hasn't expired. Set under Reward campaign tab > "Coupon expiry (days)" and enforced both at provider and our checkout-time check. If issued during a provider outage, the code exists in ShareCount but not in the provider. Create a matching coupon manually in your provider with the same code and value, or email support@sharecount.app and we'll set it up for you. ### Stripe or Polar sync failed https://www.sharecount.app/help/troubleshooting/provider-sync-failed # Stripe or Polar sync failed When the provider call fails: we still issue the local SHARE-XXXX-XXXX and email it to the customer. Customer experience preserved; only records need reconciling. ## Fastest fix - Customers tab → find the share. Row carries the code, sharer email, and tier earned. - Fix the cause (rotate the Stripe key, re-install the Stripe app, or re-issue your Polar token). - Create a matching coupon in your provider manually with the same code, value, duration, expiry. Or email support@sharecount.app with the code and we'll create it for you. ## Common reasons - Invalid key or token — rotated or revoked. Re-paste on the Settings tab. Stripe key starts rk_…; Polar Organization Access Token starts polar_oat_…. - Missing scope. Stripe needs Coupons read & write and Promotion Codes read & write (use the "Create my restricted key on Stripe" button to pre-select). Polar needs the token scoped to Discounts. - Provider outage. Retry once status is green. ## Category: FAQ Quick answers to the questions we hear most often. ### Frequently asked questions https://www.sharecount.app/help/faq/general # Frequently asked questions ## Do I need a Stripe or Polar account? No. ShareCount works end-to-end with no provider key. Codes are generated locally and honored at your existing checkout. Connect later for auto-minted provider coupons. ## Do customers need to log into X? No. They never enter X credentials on ShareCount. The post is written on X itself; we verify from public data. ## What if a customer doesn't use X? Today X is the only supported network. Other networks are on the roadmap. ## How long does verification take? Usually under 5 seconds. Sometimes X indexing lags — the dialog asks the customer to wait and tap "I've posted — check now" again. ## Is the widget mobile-friendly? Yes — teaser and dialog both scale and behave well on phones. Custom Trigger works identically. ## Can I have more than one campaign? One active campaign per product is the default. Parallel A/B: contact us. ## Does it work with my SPA / Next.js / Vue / Svelte app? Yes. The embed watches the DOM via MutationObserver. SPA navigations need no re-init. ## Can I localise the widget? Teaser, headline, subhead, CTA label, share template are all editable per product. Multi-language is on the roadmap. ## How do I cancel? Billing tab in the dashboard. Access continues until end of current period. ## What's the founding-100 offer? First 100 customers who share ShareCount on our pricing page earn a recurring coupon worth up to 100% off. ## Where can an AI agent get install instructions? /help/install/installing-with-an-ai-agent or the /help/llms.txt feed.