Publishing

Configure where SharkScope sends your major events: significant wins, achievements, leaderboard rankings. Once a destination is configured here, you can switch it on or off per player from the Publish tab on a player view, or per row in the Personal Player Names panel.

Email

Choose where SharkScope should send your email notifications. You can deliver to your account email, your manager’s email if you have one, and up to three additional addresses you specify.

Discord

How to connect:

  1. Open Discord and go to the server (or channel) where you want notifications posted.
  2. Open Server Settings → Integrations → Webhooks → New Webhook.
  3. Pick a channel, give the webhook a name (e.g. SharkScope), then click Copy Webhook URL.
  4. Paste the webhook URL below and click Connect.

Webhook URL:
Telegram

How to connect:

  1. Click Connect Telegram below.
  2. A new tab opens with our Telegram bot. Tap Start.
  3. The bot replies confirming you’re connected. This page will update automatically.

Bluesky

How to connect:

  1. In Bluesky go to Settings → Privacy and security → App passwords → Add App Password. Name it SharkScope.
  2. Bluesky shows you a one-time string in the form abcd-efgh-ijkl-mnop. Copy it.
  3. Enter your handle and the app password below, then click Connect.
App passwords are revocable from the same Bluesky settings page at any time, and unlike your real password they are scoped to non-destructive operations.

Handle:
App password:
Custom Webhook

How to connect: SharkScope can POST a notification body to any HTTPS URL of your choosing. Useful for routing notifications to Zapier, IFTTT, n8n, or your own backend.

Webhook URL:
Body format:
Example payload

SharkScope sends a single POST request per event. Headers include Content-Type: application/json (or application/xml). Example JSON body for a "Mixing it up" achievement:

{
  "title": "Alkazar99 [PokerStars] earned the ‘Mixing it up’ achievement",
  "content": "Player Alkazar99 [PokerStars] earned the ‘Mixing it up’ SharkScope poker achievement (Cashed in a mixed scheduled tournament).",
  "contentHtml": "<b>Player <a href='...'>Alkazar99</a> ...",
  "timestamp": 1746729483,
  "parameters": {
    "Type": "Achievement",
    "PlayerName": "Alkazar99",
    "Network": "PokerStars",
    "PlayerURL": "https://www.sharkscope.com/#Find-Player/Networks=PokerStars/PokerStars/Alkazar99",
    "URL": "https://www.sharkscope.com/poker-statistics/achievements/4C",
    "Code": "4C",
    "Name": "Mixing it up",
    "Description": "Cashed in a mixed scheduled tournament"
  },
  "translations": {
    "de": { "title": "...", "content": "..." },
    "fr": { "title": "...", "content": "..." }
  }
}

Notes:

  • title and content are always present in the master language (English).
  • contentHtml is the same content with inline HTML markup (links, formatting).
  • timestamp is a Unix epoch second.
  • Keys inside parameters vary by event type (Achievement, Prize, Leaderboard). Use parameters.Type to switch on event kind.
  • translations is an object keyed by 2-letter language code (de, fr, it, es, pt, ru). Each value has title and content. Omit if you only need English.
  • Reply with HTTP 2xx to acknowledge. Returning 401 / 403 / 404 / 410 disables the webhook automatically (treated as user-revoked).

XML format mirrors the JSON shape with element names like <Title>, <Content>, <ContentHTML>, and one root <TimelineEvent> element. Per-language translations use a language attribute on the duplicate element.