Skip to content

Quick start

You need a Creem API key for each store (Creem dashboard → Developers → API keys) and a Grafana you can install a plugin in. The bridge only sends GET requests to Creem, but Creem has no read-only keys: treat the key as the secret it is.

1. Run the bridge next to Grafana

The bridge needs no port of its own: put it on the same Docker network as Grafana, which is its only client.

compose.yaml
services:
  creem-bridge:
    image: ghcr.io/marceltov/creem-grafana-bridge:0.1.0
    restart: unless-stopped
    environment:
      CREEM_STORES: shop                # one name per store, comma-separated
      CREEM_KEY_SHOP: ${CREEM_KEY_SHOP} # each store's API key: CREEM_KEY_<NAME>
      BRIDGE_TOKEN: ${BRIDGE_TOKEN}     # what Grafana sends; e.g. openssl rand -hex 32

  grafana:
    image: grafana/grafana:13.2.3
    environment:
      GF_PLUGINS_PREINSTALL_SYNC: yesoreyeram-infinity-datasource@4.1.3
      BRIDGE_TOKEN: ${BRIDGE_TOKEN}
    volumes:
      - ./grafana/provisioning:/etc/grafana/provisioning:ro
      - ./grafana/dashboards:/var/lib/grafana/dashboards:ro

Every setting, with its default, is under Configuration.

2. Check it answers

docker compose exec grafana wget -qO- \
  --header "Authorization: Bearer $BRIDGE_TOKEN" \
  "http://creem-bridge:8080/series?kind=cashflow&basis=net"

A list of rows (time, store, plan, currency, amount) means it reads your store. A 502 names the store it couldn't read and why, for example store shop: Creem answered 401 for a wrong key.

3. Add the data source and the dashboard

Copy examples/grafana/ from the repository into ./grafana/: it provisions the data source with the token and the ready-made Revenue dashboard. Grafana explains both, and how to build your own panels.

Test mode

Set CREEM_API_URL=https://test-api.creem.io and use a test-mode key to try it against Creem's sandbox.