Skip to content
docs

Quickstart

Parsemend has no client library of its own. It implements the Sentry ingest protocol, so your application reports through one of the open-source Sentry SDKs, installed from your normal package manager and pointed at a Parsemend DSN. You do not need a Sentry account, and no data reaches sentry.io: the DSN decides where events go.

todo: this is a stub. Full reference documentation will live on this path, not on a docs subdomain.

What you are installing

The Sentry SDKs are open-source packages under the MIT licence, and they are the reference implementation of the protocol Parsemend speaks. Installing one is a package dependency and nothing else. There is no signup, no key from Sentry, and no traffic to their servers. The SDK builds its upload URL out of the DSN you give it, so a DSN ending in ingest.parsemend.com sends to Parsemend and only to Parsemend.

The cost of that choice is a package named after another product in your lockfile. The benefit is that the client side of your error tracking is code neither of us has to maintain, and it keeps working if you ever leave.

Install from scratch

  1. 01

    Create a project

    Sign up and create a project. It issues a DSN:

    dsn
    https://9f2c1a7b4e6d8054a3f1c9b27e0d5a83@ingest.parsemend.com/4507123
    • public key, 32-char hex
    • ingest host
    • project id

    The key is not a password; client SDKs ship it in released code. It does let anyone who has it post events into that project, so keep it out of public repositories the way you would any other environment value.

  2. 02

    Install a client library and give it the DSN

    Pick the SDK for your language. These two are the ones we have run end to end; the compatibility table below says what that means for everything else.

    Laravel

    shell
    composer require sentry/sentry-laravel
    .env
    SENTRY_LARAVEL_DSN=https://[email protected]/4507123

    On Laravel 11 and newer, add Integration::handles($exceptions) inside withExceptions() in bootstrap/app.php so unhandled exceptions reach the reporter. Queue workers are covered by the same call.

    PHP, no framework

    shell
    composer require sentry/sentry
    bootstrap.php
    \Sentry\init(['dsn' => 'https://[email protected]/4507123']);

    Node

    shell
    npm install @sentry/node
    instrument.mjs
    import * as Sentry from '@sentry/node';
    
    Sentry.init({ dsn: 'https://[email protected]/4507123' });

    Load it before the rest of your app so the instrumentation is in place first: node --import ./instrument.mjs server.mjs.

  3. 03

    Send one event

    Throw something deliberate and watch it arrive, before you rely on it to tell you about something you did not expect.

    Laravel
    shell
    php artisan sentry:test
    PHP, no framework
    php
    \Sentry\captureException(new \RuntimeException('hello parsemend'));
    \Sentry\flush();
    Node
    node
    Sentry.captureException(new Error('hello parsemend'));
    await Sentry.flush(2000);

    It shows up as an issue within a second or two. If nothing arrives, the DSN is usually unset rather than wrong. Every SDK treats an empty DSN as “disabled” and stays silent instead of failing loudly.

  4. 04

    Deploy

    Set the DSN in the production environment and ship. Events arrive on the envelope endpoint with their breadcrumbs, tags, environments and releases intact.

Already sending events to Sentry?

Then step 02 is done. Change the DSN value to the Parsemend one and redeploy. Nothing is installed or removed, and no initialisation code moves. The migration guide covers running both in parallel and what does not carry over.

SDK compatibility

Every SDK below installs the same way: package manager, then a DSN. Install it from its own documentation and substitute the Parsemend DSN wherever that documentation says to paste one.

Which Sentry SDKs we have actually run
SDKTested versionStatus
sentry/sentry (PHP)4.29.0verified
@sentry/node10.64.0verified
@sentry/browserexpected
sentry-pythonexpected
sentry-rubyexpected
sentry-goexpected
verified means we ran it and captured golden-file fixtures. expected means the SDK speaks the same wire protocol and should work, but we have not run it and will not claim that we have.

Ingest limits

Envelope endpoint
POST /api/{project_id}/envelope
Legacy endpoint
POST /api/{project_id}/store
Content-Encoding
gzip, deflate, identity
Max compressed body
20 MiB
Max decompressed body
200 MiB
Max item size
1 MiB
Default rate limit
300 events / 60s per key
Default retention
90 days

Brotli and zstd request bodies are rejected with a recorded invalid outcome rather than a 500. Transaction, log and check-in envelope items are stored as traces, logs and cron monitors. Session, sessions and client_report items are accepted and dropped.

Ready to turn on the agent? Start with the four fix modes.