SawStream for Givebutter

SawStream lets you display live data from your Givebutter account on any website — no backend required. Connect once with an API key, build a query over donors, transactions, campaigns, recurring plans, teams, tickets, members, or funds, choose a layout (table, cards, calendar, JSON, CSV, etc.), and paste a small embed snippet. Every page load fetches fresh data.

Great for donor walls, live fundraising tickers, campaign progress bars, recurring-supporter leaderboards, and CSV/JSON exports for finance and reporting.

Signing in

The admin login page is at /login. Enter your email and password and click Log in.

Contact [email protected] if you have any issues signing in.

Givebutter setup

Givebutter connects to SawStream via a single API key. Generate one in your Givebutter dashboard, paste it into SawStream, and you're connected. No OAuth flow, no refresh.

Part 1: Generate an API key in Givebutter
  1. In Givebutter, go to Settings → Integrations → API.
  2. Click Generate new key and give it a name (e.g. "SawStream").
  3. Copy the key — it's only shown once. Treat it like a password.
Part 2: Connect in SawStream
  1. Go to Givebutter in the sidebar of your SawStream admin.
  2. Paste the API key into the textarea.
  3. Click Save & Connect.
  4. SawStream verifies the key against Givebutter's API. If valid, the page reloads showing Connected.
An API key has full read access to your Givebutter account. Store it in SawStream and revoke it in Givebutter if it's ever exposed.
To rotate the key, generate a new one in Givebutter, paste it on the SawStream Givebutter settings page, and click Replace Key. To remove the connection entirely, click Disconnect.

Queries

A query defines what Givebutter data to fetch and how to display it. Each query gets its own embed code (or URL for JSON/CSV).

Creating a query
  1. Click + New Query and pick Givebutter as the platform.
  2. Give the query a name. This is just for your reference.
  3. Pick an Object from the dropdown — contacts, transactions, campaigns, plans, members, tickets, teams, or funds.
  4. Add the Fields you want to display by clicking them in the field list. SawStream infers the fields by fetching one sample record from Givebutter.
  5. Choose a Layout. See the Layouts section.
  6. Set Per Page for pagination, or leave blank to show all records (up to 10,000).
  7. If you want a search bar on the embed, turn on Enable Search Bar and pick which fields to search.
  8. To make each record clickable, fill in Detail Link Template. Use {!FieldName} for placeholders, e.g. https://example.com/donor?id={!id}.
  9. Click Save Query.
Common query patterns
  • Donor wall — object contacts, fields first_name, last_name, total_donated, layout Cards.
  • Recent donations ticker — object transactions, fields amount, created_at, contact, layout Table.
  • Campaign progress — object campaigns, fields title, goal, raised, layout Custom HTML.
  • Recurring supporters leaderboard — object plans, fields amount, frequency, contact, layout Table.
  • Event ticket list — object tickets, fields type, price, attendee, layout Grid.
  • Peer-to-peer team standings — object teams, fields name, raised, members_count, layout Cards.
Data freshness

The Data Freshness slider controls caching. Live Data refetches on every page load. The 15-minute / 1-hour / 6-hour / 12-hour options cache results, making page loads faster and reducing Givebutter API usage. Settable per query.

Editing, copying, deleting

From the Queries page: Edit opens the editor, Copy Code copies the snippet, Delete removes the query (type DELETE to confirm).

Layouts

Each query has a layout that controls how the data appears on your site.

Table

Standard data table with column headers, sortable by clicking, and a sticky first column on narrow screens.

Cards

Each record becomes a card — first field is the title, remaining fields show as label/value pairs. Great for donor walls.

Grid

Tighter 3-column layout. Compact label/value rows. Good for short lists.

Sidebar

Filter sidebar (search, checkboxes, range sliders) auto-built from your fields, with matching records on the right.

Calendar

FullCalendar month/week/list views. Pick a date field (e.g. created_at) for the start, a title field, and optionally an end date.

Custom HTML

You write a template; SawStream renders it per record. Use {!FieldName} placeholders. Ideal for campaign progress bars and donor walls.

JSON

Stable JSON URL — fetch it from any frontend, mobile app, or workflow.

CSV Download

A URL that triggers a CSV file download. Wire it to a Download button for finance and reporting exports.

Givebutter returns nested objects on some fields (e.g. contact, address, transaction.giving_space). SawStream flattens these to readable strings before rendering — for objects with a name / title / email property, that's what shows.

Embedding on your site

Once you have a query, go to its detail page to get the embed code:

<div class="sawstream-section"></div>
<script src="https://sawstream.com/e/tenant/live.js?q=abcdedquerycodexyz" async></script>

Paste both lines into your website where you want the data to appear. The script tag can go anywhere on the page, including the <head>.

Targeting a specific element

By default the widget renders inside the nearest .sawstream-section div above the script. For more control, add a data-target:

<script src="https://sawstream.com/e/tenant/live.js?q=abcdedquerycodexyz"
  data-target="#my-custom-div" async></script>
JSON and CSV links

For JSON and CSV queries you'll see a plain URL instead of a snippet. The JSON URL returns data as an array of objects; the CSV URL triggers a file download.

Settings

Go to Settings in the sidebar to manage allowed origins for your embeds.

Allowed Origins

A list of domains allowed to load your embed and call the query API. Enter one domain per line, e.g. https://mynonprofit.org. Only requests from those origins are served. Settable globally or per-query.

Leaving allowed origins blank in production means anyone can embed your query on their site.

Your account

Changing your password

Click the lock icon in the sidebar footer. New passwords must be at least 10 characters, include a number, and include a symbol.

Logging out

Click Log out in the sidebar footer.