Hoppa till innehållet

Guide

Meddelanden från Qrona

Med tillägget Byråstöd: Klientkommunikation bestämmer byråns Qrona vem som får vad och när, och skickar den färdiga datan för ett meddelande i taget. Hur meddelandet ser ut bestäms här, i en mall som designas en gång.

Så fungerar det

  1. Byråns arbetsyta är kopplad till byråns Qrona (Inställningar → Integrationer → Koppla Qrona), och Qrona-kunden har Byråstöd. Då visas tillägget under Inställningar → Tillägg, och en administratör installerar det.
  2. Qrona får beskedet med en systemnyckel för arbetsytan och hemligheten som kvittona signeras med. Systemnyckeln hör till organisationen, inte till en person, och har bara behörigheterna messages:send och templates:render. Den återkallas när tillägget avinstalleras eller kopplingen tas bort.
  3. Mallarna designas i Qrona Newsletter mot Qronas datakontrakt och publiceras.
  4. Qrona förhandsgranskar med POST /templates/{key}/render och skickar med POST /messages. Kvittona kommer tillbaka som signerade webhooks.
curl -X POST 'https://newsletter.qrona.se/api/v1/messages' \
  -H "Authorization: Bearer $QRONA_NEWSLETTER_SYSTEM_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "template": "byra.momsunderlag",
    "to": { "email": "ekonomi@klienten.se", "name": "Eva Ekonom" },
    "category": "service",
    "data": { "klient": { "namn": "Exempel AB" }, "knapp": { "url": "https://byran.q.qrona.se/portal/underlag", "text": "Ladda upp" } },
    "idempotency_key": "occ_20261023_0042",
    "reference": "occ_20261023_0042",
    "client_ref": "kl_7f3a"
  }'

Alla fält och fel: Skicka meddelande.

Mallar och datakontrakt

En Qrona-mall har en nyckel, samma som datakontraktets i Qrona. Kontraktet säger vilka fält meddelandet får och har exempeldata, som visas i editorn och förhandsgranskningen. Värdena kommer färdiga – belopp formaterade och datum utskrivna – och Qrona Newsletter räknar inget och slår inte upp något.

  • Ett fält i en text, en knapp eller ämnesraden: {{data.klient.namn}}. Värdet visas alltid som text: det kan aldrig bli HTML eller ett annat fält.
  • Listor visas med blocken Tabell och Lista – en rad per post. Ett längre textfält visas med Text ur data, i stycken.
  • Visa bara om: ett block kan visas bara när ett fält finns eller är sant, eller bara i nyhetsbrev.
  • Publicera fryser mallen som en ny version. En publicerad version ändras aldrig, och varje meddelande sparar sin version. Publiceringen stoppas om mallen använder ett fält som inte finns i kontraktet.
TypVärde
text TextEn färdig text (eller ett tal).
url Adress (URL)En https-adress (mailto: och tel: går också).
boolean Ja/nejtrue eller false – för Visa bara om.
list ListaEn lista med objekt; items säger vilka fält varje rad har.

Ett fält är obligatoriskt om inte required: false står. Datan i ett meddelande kontrolleras mot kontraktet innan något skickas (422 med errors[] annars). Ett exempel:

Datakontrakt
{
  "key": "byra.momsunderlag",
  "version": 1,
  "title": "Påminnelse om underlag till momsdeklarationen",
  "fields": [
    {
      "path": "klient.namn",
      "type": "text",
      "label": "Klientens namn"
    },
    {
      "path": "klient.orgnr",
      "type": "text",
      "label": "Organisationsnummer",
      "required": false
    },
    {
      "path": "period.etikett",
      "type": "text",
      "label": "Perioden"
    },
    {
      "path": "period.intern_deadline",
      "type": "text",
      "label": "Byråns sista dag för underlag"
    },
    {
      "path": "period.skv_deadline",
      "type": "text",
      "label": "Skatteverkets sista dag",
      "required": false
    },
    {
      "path": "konsult.namn",
      "type": "text",
      "label": "Konsultens namn"
    },
    {
      "path": "konsult.epost",
      "type": "text",
      "label": "Konsultens e-post",
      "required": false
    },
    {
      "path": "konsult.telefon",
      "type": "text",
      "label": "Konsultens telefon",
      "required": false
    },
    {
      "path": "knapp.url",
      "type": "url",
      "label": "Länk till uppladdningen"
    },
    {
      "path": "knapp.text",
      "type": "text",
      "label": "Knappens text"
    },
    {
      "path": "saknas",
      "type": "list",
      "label": "Underlag som saknas",
      "items": [
        {
          "key": "typ",
          "type": "text",
          "label": "Typ"
        },
        {
          "key": "beskrivning",
          "type": "text",
          "label": "Beskrivning"
        },
        {
          "key": "belopp",
          "type": "text",
          "label": "Belopp",
          "required": false
        }
      ]
    },
    {
      "path": "bradskande",
      "type": "boolean",
      "label": "Brådskande",
      "required": false
    }
  ],
  "example": {
    "klient": {
      "namn": "Exempel AB",
      "orgnr": "556677-8899"
    },
    "period": {
      "etikett": "september 2026",
      "intern_deadline": "fredag 2 oktober",
      "skv_deadline": "måndag 12 oktober"
    },
    "konsult": {
      "namn": "Karin Konsult",
      "epost": "karin@byran.se",
      "telefon": "08-123 45 67"
    },
    "knapp": {
      "url": "https://byran.q.qrona.se/portal/underlag",
      "text": "Ladda upp underlaget"
    },
    "saknas": [
      {
        "typ": "Kvitton",
        "beskrivning": "Inköp med företagskortet",
        "belopp": "4 312 kr"
      },
      {
        "typ": "Kontoutdrag",
        "beskrivning": "Skattekontot, september"
      }
    ],
    "bradskande": false
  }
}

Tjänstemeddelanden och nyhetsbrev

categoryStoppas avRäknas mot
serviceStuds, skräppostanmälan, radering och manuell spärr – aldrig en avregistrering. Har ingen avregistreringslänk.Tilläggets egen pott per månad, utanför månadstaket.
marketingAllt ovan och avregistreringar, som arbetsytans andra utskick. Får avregistreringslänk och List-Unsubscribe.Organisationens månadstak.

Ett meddelande som inte får gå sparas med status suppressed och reason, och kvittot message.suppressed skickas.

Inga dubbletter

idempotency_key är unik per arbetsyta för alltid, inte bara ett dygn. Samma nyckel igen ger 200 med det första meddelandet och skickar inget nytt – så Qrona kan göra om ett anrop som inte fick något svar. Samma nyckel med annat innehåll ger 409 idempotency_conflict. Använd utskickets id i Qrona.

Kvitton

Varje meddelande ger kvitton till Qronas mottagare /qrona-newsletter/messages/events, med Qrona-kopplingens nycklar och signerade som andra webhooks (se Webhooks). Qrona känner igen meddelandet på reference och message_id.

HändelseNär
message.sentUtskickstjänsten tog emot meddelandet för leverans.
message.deliveredMottagarens e-postserver tog emot meddelandet.
message.bouncedAdressen tar inte emot e-post. Den spärras i hela organisationen.
message.complainedMottagaren markerade meddelandet som skräppost. Adressen spärras i hela organisationen.
message.failedMeddelandet kunde inte levereras, och inga fler försök görs.
message.suppressedMeddelandet skickades inte: adressen är spärrad för meddelandets klass, eller taket för månaden är nått. reason säger varför.
Headers
POST /api/qrona-newsletter/messages/events HTTP/1.1
Content-Type: application/json
Qrona-Signature: t=1761208205,v1=…
Qrona-Event: message.delivered
Qrona-Delivery: 4d3c2b1a-0f9e-4d8c-b7a6-5f4e3d2c1b0a
Kropp
{
  "id": "2c9d4e1f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
  "type": "message.delivered",
  "created_at": "2026-10-23T08:30:05.000Z",
  "workspace_id": "0b8f6c2a-1d3e-4f5a-9b7c-8d6e5f4a3b2c",
  "data": {
    "message_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "reference": "occ_20261023_0042",
    "client_ref": "kl_7f3a",
    "template": "byra.momsunderlag",
    "template_version": 3,
    "category": "service",
    "email": "ekonomi@klienten.se",
    "status": "delivered",
    "reason": null,
    "occurred_at": "2026-10-23T08:30:04.000Z"
  }
}

Vad som sparas

  • Datan används för att göra meddelandet och sparas krypterad för webbversionen i 30 dagar. Sedan finns bara dess SHA-256 kvar – Qrona är källan.
  • Mallversionen och HTML:ens SHA-256 sparas alltid, liksom kvittona.
  • client_ref är byråns klient, pseudonymt. Antalet olika klienter som fått ett meddelande under en kalendermånad är underlaget för fakturan.