Skip to content

Quotes

Quotes lets your team build, send, and track sales quotes without leaving graph8. Pull line items from your Stripe catalog, attach contract terms, send for signature, and watch the quote progress from draft to accepted in real time.

Quote Lifecycle

Every quote moves through a sequence of statuses:

StatusMeaning
DraftBeing authored — not yet sent to the prospect
SentDelivered to the signer’s email
ViewedSigner has opened the quote at least once
AcceptedSigner has signed and accepted the quote
DeclinedSigner rejected the quote
ExpiredQuote passed its valid_until date without being accepted

Status transitions are automatic — graph8 updates them as the prospect interacts with the quote.

Creating a Quote

  1. Go to Revenue → Quotes
  2. Click New Quote
  3. Fill in the basic info:
    • Title — internal name (visible to your team)
    • Company — the buying company (links to a contact + deal)
    • Signer — the contact who will receive and sign the quote
    • Deal — optional; link to an active deal in your pipeline
    • Owner — which rep owns this quote
    • Currency — defaults to your org currency, override per quote
    • Valid until — expiration date
  4. Add line items (see below)
  5. Add terms, payment terms, and any custom notes
  6. Click Save to keep it as a draft, or Send to deliver it

Line Items

Line items are the products and services on the quote. Each line pulls from your Stripe catalog or can be a custom one-off.

FieldDescription
ProductPulled from your Stripe catalog (or custom name for one-offs)
DescriptionOptional free-text description shown to the signer
QuantityNumber of units
Unit amountPrice per unit (in cents internally; entered as currency)
Discount %Per-line discount applied before tax
Billing frequencyMonthly, annual, one-time, or custom
Line totalAuto-calculated: quantity × unit_amount × (1 - discount_pct)

Adding a Line Item from Stripe

  1. Click Add Line Item → From Stripe
  2. Search by product name
  3. Pick a price tier (Stripe products can have multiple price points)
  4. Set quantity and any per-line discount
  5. Click Add

The Stripe product name, price, and billing frequency are pre-filled. You can override description and discount per line.

Custom Line Items

For services, one-off implementations, or anything not in Stripe:

  1. Click Add Line Item → Custom
  2. Enter product name, description, unit amount, and quantity
  3. Set billing frequency manually

Custom line items don’t sync back to Stripe — they’re local to the quote.

Quote Totals

The quote totals row shows:

TotalCalculation
SubtotalSum of all line totals
DiscountCumulative discounts applied
TaxTax amount (per your org tax settings)
TotalSubtotal − Discount + Tax

All amounts respect the quote’s selected currency.

Contract Terms

Beyond line items, quotes capture contract terms that govern the sale.

Standard Terms

FieldPurpose
Payment termsWhen payment is due (e.g., “Net 30”, “Upon receipt”)
Contract monthsLength of the contract in months
Contract start dateWhen the contract begins
Contract end dateWhen the contract ends
Accepted payment methodsWhich payment methods the signer can use
Marketing rightsWhether you can use the customer in case studies, logos, press

Terms Templates

Save reusable term sets in Settings → Quotes → Terms so you don’t re-type them on every quote. Pick a template when creating a quote and the standard fields auto-populate.

Custom Terms and Privacy Content

FieldWhat It Holds
Terms contentFull contract terms — typically a long-form legal block
Privacy contentPrivacy and data-handling clauses
NotesInternal notes (not visible to the signer)
Public notesNotes that appear on the signer-facing quote page

Use a rich text or HTML format — the quote renderer escapes appropriately for safe display.

Quote Templates

Reusable quote skeletons let you spin up consistent quotes quickly.

  1. Go to Settings → Quotes → Templates
  2. Click New Template
  3. Build it like a regular quote — terms, line items, payment terms
  4. Save the template

When creating a quote, pick a template and all fields pre-populate. You can then customize per-prospect.

Template Documents

Templates can include attached documents (e.g., NDAs, MSAs):

Doc TypeCommon Use
NDAMutual non-disclosure
MSAMaster service agreement
OtherAny custom attachment

Attached documents are included in the signature envelope alongside the quote.

Sending a Quote

  1. Open a draft quote
  2. Click Send
  3. Confirm the signer’s email
  4. Optionally customize the email body
  5. Click Send Now

graph8 generates a public token and viewer token for the quote, then emails the signer a link. The status flips to Sent. When the signer opens the link, status flips to Viewed. When they sign, status flips to Accepted.

What the Signer Sees

The signer-facing page shows:

  • Your company name, logo, and brand colors
  • All line items with descriptions and totals
  • Contract terms (the public ones — internal notes are hidden)
  • Accepted payment methods
  • A signature pad for accepting

Signers do not need a graph8 account — the public link is sufficient.

E-Signature

Accepted quotes flow through the e-signature workflow:

Field CapturedSource
Signer nameTyped by the signer at signing
Signer IPAuto-captured from the signing session
User agentAuto-captured from the signing session
Accepted atTimestamp of signature

graph8 stores an envelope record with these audit fields. If your org uses a third-party e-sign provider (DocuSign, etc.), the envelope ID syncs back so you have a single source of truth.

PDF Generation

After acceptance, graph8 renders the signed quote as a PDF and stores it in S3. The pdf_s3_key is recorded on the quote record. Reps can download the signed PDF from the quote detail page.

Tracking Quote Activity

Every interaction with the quote logs to its activity timeline:

ActionLogged As
Quote createdActor: rep
Quote sentActor: rep, with email destination
Quote viewedActor: signer (anonymous), with IP + user agent
Quote acceptedActor: signer, with signature metadata
Quote declinedActor: signer, with optional reason
Quote expiredActor: system, automatic on valid_until
Quote duplicatedActor: rep, with source quote ID

The timeline is visible on every quote detail page.

Duplicating a Quote

To create a similar quote (e.g., a renewal or a tweaked version):

  1. Open the source quote
  2. Click Duplicate
  3. graph8 creates a draft copy with all line items, terms, and metadata
  4. Update any differences (signer, dates, line items)
  5. Save and send

Stripe Integration

When connected to Stripe (see Settings → Integrations):

  • Quote line items can pull directly from your Stripe product catalog
  • Accepted quotes can optionally create a Stripe Quote object (stripe_quote_id is recorded on the graph8 quote)
  • Subscription line items create Stripe subscriptions on signing

Configure auto-Stripe-quote behavior in Settings → Quotes → Settings.

Quote Settings

Org-wide quote behavior is configured at Settings → Quotes:

SettingWhat It Controls
Default currencyCurrency used for new quotes
Default expirationDays until a quote auto-expires (e.g., 30)
Default payment termsNet 30, Net 60, etc.
Default tax rateApplied to quotes unless overridden
Auto-create Stripe QuoteWhether accepting a quote creates a Stripe Quote
Email brandingFrom name, From email, signature block

Permissions

RoleCapabilities
AdminCreate, edit, send, delete any quote; manage templates and settings
MemberCreate, edit, send, delete their own quotes
ViewerRead-only access to quotes

Troubleshooting

IssueFix
Signer reports the quote link doesn’t workCheck that the quote isn’t expired or accepted; resend if needed
Stripe products don’t show in line itemsVerify Stripe is connected at Settings → Integrations and the product list has refreshed
Tax amount looks wrongConfirm the org’s tax rate is set correctly in Settings → Quotes
Quote stuck in “Sent” — signer says they got the emailThe signer may not have clicked the link yet; status flips to “Viewed” only on click
Can’t delete a quoteAccepted quotes cannot be deleted (compliance / audit). Delete only Draft or Expired quotes
Signature didn’t capture nameOlder browsers may not support the signature pad; ask the signer to re-open in Chrome/Safari