Suger

Create and manage a private offer

Easily create private offers from Salesforce opportunities using the Suger App within your Salesforce Console, then manage them — extend, cancel, notify contacts, or download the EULA — without leaving Salesforce.


Overview

A private offer is a custom deal you send to a specific buyer through a cloud marketplace — AWS, Azure, or GCP. It includes your negotiated pricing, contract terms, and expiration date. Think of it as sending a quote: once the buyer accepts it, the contract is live and billing starts automatically through the marketplace.

After adding the Suger App to your Salesforce Console, you can create these private offers directly from opportunities — no need to switch to the Suger Console. You can also create Agreement-Based Offers (ABO) from Salesforce. Once an offer has been created, you can manage it from the same Suger Widget on the opportunity — extend the expiry date, cancel it, notify contacts, and download the EULA file.

Prerequisites

  • The Suger App must be installed, connected, and set up with the Suger widget on your opportunity pages.
  • You need the Suger User, Suger User - Marketplace, or a cloud-specific marketplace permission set assigned to your Salesforce account. If you can’t see the New Offer button on an opportunity, your permission set is likely missing or incorrect — see Permission Sets.
  • The product you want to create an offer for must already exist in Suger. If it doesn’t, create it in the Suger Console first before continuing.

Create a private offer

  1. Navigate to the opportunity’s detail page and click the New Offer dropdown button at the top of the Suger App. If you don’t see the widget, it may not be added to your page layout yet — see Add Suger widgets and buttons to Salesforce pages.
New Offer dropdown button on a Salesforce opportunity
  1. Locate and click the “Private Offer” button.
Private Offer option in the New Offer dropdown menu
  1. Choose the product on which the private offer will be based and complete the required fields in the form. Note that the required fields may vary depending on the cloud marketplace and the type of offer.

    • The product list shows only the products available in your Suger account.
    • If you are assigned a cloud-specific permission set (for example, Suger Marketplace - AWS), you will only see products for that cloud.
Private offer creation form in Salesforce
  1. Once all necessary information is filled in, submit the form to create the offer.
Submitting the completed private offer form
  1. You are all set!

Check a GCP offer before you create it

Three GCP offer kinds get a Validate button in the modal footer, next to Create: a plain GCP private offer, a GCP replacement offer, and a GCP CPPO-Out replacement offer. Nothing else does.

It sends the offer you have filled in to Suger’s validator and shows the verdict right above the buttons, without creating anything:

VerdictWhat it means
Checks passedNothing in the offer would be rejected.
This offer would be rejectedThe reasons are listed underneath as bullets, verbatim from the create path. Fix them and validate again.

While the check runs the button reads Validating…. The verdict is cleared as soon as it might no longer be true — when you change any field, or switch to a different product — so a banner can never describe an offer other than the one on screen.

If the product’s pricing could not be loaded

The AWS, AWS Container, and GCP create forms show a red banner at the top when Suger could not load the selected product’s specification. Submitting is refused with:

Cannot create this offer: the product info could not be loaded. {detail}

A related message appears when the product loaded but has no pricing plans to choose from:

Please select a pricing plan. If the dropdown is empty, this product’s pricing could not be loaded.

Both mean the same thing in practice: pick a different product, or fix the product’s pricing in the Suger Console, then reopen the form. There is no field on the form to correct.

GCP prepay: what happens to unused commitment

A GCP prepay offer’s create form carries an Unused commitment rule selector above the installment schedule, with three choices:

RuleWhat it does
RolloverAn installment’s unused balance carries into the next installment.
ExpireThe unused balance is discarded at the end of the installment — the carried-over commitment and any partner-sponsored free credit.
CustomSet the behaviour installment by installment.

Once the offer exists, the installment table on the offer detail page shows the resulting rule as a read-only Unused Commitment column, worded exactly as the GCP producer portal words it, so the two can be compared side by side:

  • Rollover to next commitment
  • Expire all unused balance
  • Expire all at offer end date — the final installment, where the term ends and nothing can roll further.

Proration (GCP, monthly billing)

A GCP private offer whose Payment Recurrence is Monthly has a Proration switch in its pricing section:

SettingWhat GCP does
Off (the default)Installments follow the offer’s anniversary date.
OnGCP prorates the first installment against the start date, so billing lines up with calendar months.

The switch appears only for Monthly recurrence, and never when the usage pricing model is Usage-based discount only, which has no commitment installment to prorate.

AWS net payment terms

For an AWS private offer, choose Customer’s net terms with AWS to leave the custom term empty, or choose Net 15, 30, 45, 60, 90, or 120 after agreeing the term with the buyer. The buyer does not choose this value in Suger. Agreement-Based Offers are treated as new offers, so this selection starts empty.

For a CPPO resale authorization, the ISV selects the maximum buyer net payment term. For the downstream CPPO, the channel partner can inherit that maximum or select a shorter term, but cannot select a longer one. If the authorization has no maximum, a custom downstream term is unavailable. Cloning any supported AWS offer or authorization copies its current value into the new-offer form. Released values are read-only.

Configure renewal terms (AWS)

AWS contract offers can carry pre-authorized renewal terms, so the agreement renews on terms the buyer already agreed to instead of requiring a new offer each cycle. When the offer qualifies, a Configure renewal terms section appears on the AWS offer form.

Whether the section appears depends on the product’s commits. It is not a setting you can turn on, and usage dimensions on the same product do not hide it:

Offer formThe section appears when
AWS SaaSThe product carries at least one commit.
AWS Container or AMIThe product carries at least one commit, and the offer is priced with commits — not usage-only, and not free.
AWS Professional ServicesThe product carries at least one commit.

If the offer stops qualifying after you set renewal terms — for example, you switch to a product with no commits — the terms are removed from the offer automatically, so they are never sent to AWS on an offer that cannot carry them.

Pick one of three renewal options:

OptionWhat it does
No price upliftRenew at the same price each cycle.
Price upliftIncrease pricing by a fixed percentage, or within a pre-negotiated range, each cycle.
No renewalDo not include auto-renewal terms with this offer.

Choosing Price uplift reveals a Price uplift type:

Uplift typeFields
Fixed percentagePrice increase percentage — 0 to 100, in steps of 0.01.
Percentage rangeMinimum uplift percentage and Maximum uplift percentage, each 0 to 100 in steps of 0.01. The final figure inside that range is chosen later, per renewal.

Once the offer exists, the terms read back as a Renewal terms card on the offer detail page. Managing a renewal after the buyer accepts — adjusting the uplift inside an agreed range, or opting out — happens on the entitlement, not here; see pre-authorized auto-renewal.

Auto-Activation (Azure)

Azure SaaS offers can carry an Auto-Activation toggle — Automatically activate the subscription on purchase:

  • On — Azure activates the SaaS subscription automatically once the customer purchases the private offer.
  • Off — your team activates the subscription. Suger does not activate it for you on these integrations, because the integration manages subscription activation itself.

The toggle appears only when both are true: the Azure integration is set to self-managed subscription activation, and the offer uses V2 pricing (newCustomizedPlans). V1 offers cannot carry the setting at all, so it is hidden rather than shown disabled.

Attach your own EULA files

When the offer uses your own EULA, the form’s EULA section lists every PDF you attach, and Suger merges them into one document in the order shown. Use the arrows beside each file — Move up in merge order and Move down in merge order — to change its position before you submit.

  • If you also tick Attach Standard Contract for … Marketplace, or the checkbox that attaches your public offer’s default EULA, that document is appended last, after your own files.
  • On an Agreement-Based Offer that uses Append to Existing EULA, the base agreement’s existing EULA stays first, and the files you upload follow it in the order shown.
  • The AWS Reseller and AWS Professional Services forms have no standard contract to attach, so their files merge in the order shown.

Snowflake: attach PDFs for the buyer

A Snowflake private offer has an Attachments section for PDF files the customer can download while viewing the offer — up to 5 files, 5 MB each.

  1. Click Attach file to add a row, then choose a PDF for it.
  2. Repeat for up to five files. Attach file disappears once five rows exist, and the trash icon on a row removes it.

A file over 5 MB is refused with The file size is too large., and a file that is not a PDF with The file type is not supported. Once the offer exists, the offer page lists the attached file names under Attachments.

Oracle: when billing starts

An Oracle private offer sets when billing starts in its Billing Start section:

OptionWhat happens
On acceptance (the default)Billing starts when the buyer accepts the offer.
Specify dateA date field appears, and billing starts on the date you pick.

Offer Expiration Date — the buyer’s deadline to accept — defaults to 30 days after creation, or to the day before the billing start date if that is sooner. When you specify a start date, the expiration date must fall before it. The form refuses to submit with:

  • Billing start date is required when billing starts on a specific date.
  • Offer expiration (accept-by) date must be before the billing start date.

What happens next

After you submit the offer:

  • Suger creates the offer record in your Salesforce org, linked to the opportunity.
  • The offer is sent to the cloud marketplace (AWS, Azure, or GCP) for processing.
  • Once the marketplace confirms the offer, the offer status updates and the offer URL becomes available.
  • You can then copy the offer URL from the offer record and send it to the buyer — they use it to review and accept the offer in their cloud marketplace account.

Track private offer status

After creating a private offer, you can track its progress directly from the Opportunity page via the embedded Suger widget. All offer and entitlement data synced from the marketplace is displayed in real time within the widget — no need to switch platforms.

  1. Once you click Create, you’re returned to the Opportunity detail page. The Suger widget immediately displays the new offer with the status PENDING_CREATE.

Suger widget showing a new offer in PENDING_CREATE status

  1. Wait up to 5 minutes, then refresh the widget. The offer status updates to one of the following:

    • Create Success — the offer was successfully created in the marketplace but has not yet been sent to the buyer.
    • Pending Acceptance — the offer has been pushed to the marketplace and the buyer has been notified.

Suger widget showing updated offer status

  • Invalid — the marketplace refused the offer before anything was created: its shape, term, or replacement target was rejected pre-flight. Nothing exists on the marketplace side, so the offer is still yours to correct — open it and use Edit Draft. This is distinct from Create Failed, where the call to the partner itself failed and may have left something behind.
  1. When the buyer accepts the offer, the widget updates to show Accepted, and you’ll see the corresponding Offer object linked within the widget.

Suger widget showing an accepted offer linked to the Offer object

  1. Click the offer directly in the widget to open a detailed view, including pricing, contact information, term details, and entitlement data.

What’s on the offer detail page

Beyond the standard offer fields, the offer detail page shows a few sections only when they apply to that offer. If you don’t see one below, it means the condition for it wasn’t met — not that data is missing.

Buyer payment term (AWS)

AWS offers carry a Buyer payment term row in Offer Information, showing the term as its friendly label (Net 30) rather than its raw duration. On a reseller authorization or CPPO — inbound or outbound — the same row is relabelled Maximum buyer net payment term, because on those the value is the ceiling the ISV set rather than the term the buyer actually gets.

The row is hidden on non-AWS offers, and on an AWS offer where the buyer is using their AWS account default, so it never renders as a bare dash.

Renewal offers (AWS and Azure)

An offer is recognized as renewing an existing agreement on both AWS and Azure — AWS marks it on the offer’s metadata, Azure through the private offer’s customer contract renewal flag. Whichever cloud it came from, the offer reads as a renewal wherever the app shows renewal status.

Replaced Offer ID and Replaced Offer (GCP)

GCP replacement and amendment offers carry two extra rows in Offer Information, so you can trace the new offer back to the one it supersedes:

RowWhat it shows
Replaced Offer IDThe marketplace ID of the offer this one replaces.
Replaced OfferA link straight to the replaced offer’s record in Salesforce.

Both rows appear only on GCP replacement and amendment offers. Replaced Offer is additionally omitted until Suger has resolved the replaced offer into a record it can link to — if you see the ID but not the link, the replaced offer hasn’t synced yet.

GCP dates in Pacific time

GCP’s Producer Portal shows a private offer’s dates on the Pacific clock, and so does the offer page. On a GCP offer, dates read as a Pacific date and time with the PST or PDT label — for example 8/31/2026, 11:45:00 PM PDT — so everyone sees the same value whatever their own timezone.

RowWhat it shows
Expire Date11:45 PM Pacific on the last day the buyer can accept — the time GCP itself displays.
Acceptance DateWhen the buyer accepted.
Start Date, End DateGCP only: the offer’s term start and end. Each row is hidden until the offer has that value — a pending offer may have no start yet, and a pay-as-you-go offer has no end.

Offers on other marketplaces keep showing the date alone.

Universal PAYG discount banner

When a GCP offer was priced with a single discount across all usage rather than per-dimension rates, a banner sits at the top of Offer Information stating the discount — for example, 20% off all usage, captioned Universal PAYG discount. It is there so a reviewer doesn’t read the absence of a per-dimension breakdown as missing pricing.

Dimension Tags (read-only)

If your organization uses dimension tagging to build discounts (see Dimension-tag discounts below), the offer detail page shows the tag configuration the offer was built with, as a read-only Dimension Tags section directly above the pricing section. You cannot edit it here — this is the record of how the offer was priced.

CloudWhere it appears
AWSOne panel at the offer level, above Usage Dimensions.
GCPOne panel at the offer level, above Usage Dimensions. For prepay offers, tag groups are set per payment installment, so you get one panel per installment.
AzureOne panel per plan, above Azure Pricing — matching the way Azure offers configure discounts per plan. A plan with no dimensions shows nothing.

Clone a private offer

You can quickly create a new offer based on an existing one.

  1. Open the Opportunity that contains the existing offer.
  2. In the Suger widget, click the offer you want to clone.
  3. In the top-right corner of the offer view, locate the arrow-down button next to the Refresh icon.
  4. Click the dropdown and select Clone.
  5. A new offer form opens with pre-filled details from the original offer. Make any necessary changes and click Create to submit.

Cloning a private offer from the Suger widget in Salesforce

GCP replacement offers: term and cancellation

Cloning a GCP offer produces a replacement offer, and its form carries two controls that decide how the new offer relates to the one it replaces.

  1. Change Offer Duration — a toggle whose own help text reads: “Off keeps the replaced offer’s end time (coterm). Turn on to set your own term via Offer Duration.”

    • Off (the default) — the replacement coterms to the replaced offer: it ends on the same date, and the form shows that date as a read-only Offer End Date.
    • On — an Offer Duration field appears and you set the term yourself. Its unit follows the Payment Recurrence you selected.
  2. Cancel the existing offer at the publishing of this offer — a checkbox in the Existing offer card. When checked, the original offer is cancelled automatically once the new offer reaches pending acceptance status. This only affects whether the original offer is still visible and acceptable; it does not touch an existing subscription if the buyer had already accepted the original offer.

On a Monthly replacement offer, the Proration switch is shown read-only. GCP does not allow the proration policy to change on an amendment, so the form carries over the replaced offer’s setting: On, Off, or Not set (GCP default) when GCP created the original offer under its own default.

Manage an existing offer

Once a private offer has been created from an opportunity, you can manage it without leaving Salesforce. Open the Opportunity that contains the offer, then click the offer in the Suger Widget to open the Offer Page. From there you can extend the expiry date, cancel the offer, notify contacts, and download the EULA file.

Extend a private offer

Extend is offered only where the marketplace accepts the change, so the action is absent rather than failing:

MarketplaceCan extend?
AWSYes — except a resale authorization (CPPO_OUT). AWS rejects any change to a released resale authorization.
AzureOnly on V2 / V3 pricing (newCustomizedPlans, saasNewCustomizedPlans, vmSoftwareReservations). Not on V1.
OracleNo — Oracle Marketplace does not support extending an offer’s expiry date.
GCP and the restYes.

The offer must also be in Pending acceptance, Expired, or Update failed. An offer the buyer has already accepted has an agreement behind it, and its expiry date no longer governs anything.

  1. Open the Opportunity that contains the private offer.
  2. In the Suger Widget, click the offer you want to extend.
  3. Click the arrow-down button next to the Refresh icon in the top-right corner.
  4. Select Extend from the dropdown menu.
  5. Update the Expiry Date to a new future date, then save.

Extending a private offer from the Suger Widget in Salesforce

Cancel a private offer

  1. Open the Opportunity that contains the private offer.
  2. In the Suger Widget, click the offer you want to cancel.
  3. Click the arrow-down button next to the Refresh icon in the top-right corner.
  4. Select Cancel from the dropdown menu.
  5. Confirm the cancellation when prompted.

Canceling a private offer from the Suger Widget in Salesforce

Notify contacts

  1. Open the Opportunity that contains the private offer.
  2. In the Suger Widget, click the offer you want to notify contacts about.
  3. Find the Notification Contacts card on the right side of the Offer Page.
  4. Click Add Contact.
  5. Choose the contact(s) you want to notify and confirm.

Adding notification contacts to an offer in Salesforce

Whether Suger’s notification email actually goes out is decided by your organization’s email notification settings in the Suger console: it is sent only while Enable Email Notification is on and the Notify offer contacts row is enabled, and the contacts you pick reach it through that row’s Offer Notification Contacts rule. See Notify contacts.

Download the EULA file

  1. Open the Opportunity that contains the private offer.
  2. In the Suger Widget, click the offer you want to review.
  3. Scroll down to the bottom of the Offer Page.
  4. The EULA file is available in the last section of the Offer Page.

Downloading the EULA file from an offer in Salesforce

Once an offer is past Draft, clicking its EULA opens the file in a new browser tab. Suger fetches a current download link at the moment you click, rather than reusing the link saved on the offer, which can expire — so allow pop-ups for Salesforce. If the file cannot be opened, an Unable to open EULA message gives the reason: Allow popups for Salesforce, then try again. when the browser blocked the new tab, The EULA download link is unavailable. Please try again. when Suger returned no usable link, or the error Suger reported.

Configure CRM field mapping for private offers

Configuring Salesforce private offer field mapping lets you auto-generate private offer fields from your CRM, so information is pre-populated when sending offers from Salesforce. This saves time and reduces manual entry errors during deal submission. Field mapping is set up in the Suger Console by your Salesforce admin.

  1. Access the Suger Console — the central hub for managing configurations and settings.
  2. Navigate to the Settings tab.
  3. Select the Private Offer setting.
  4. Create a new configuration.
  5. Choose the Cloud partner and associated CRM for which you want to configure the field mapping.
  6. Map Salesforce fields to the fields relevant to private offers. For example, associate offer names with opportunities, the buyer AWS account ID with the corresponding field, and offer expiration dates with the relevant fields.
  7. Save the configuration.

AWS private offer required fields

Field NameSourceDescription / Purpose
Salesforce Opportunity IDSalesforce Field (Id)Identifies the Opportunity associated with the offer. Required for linking the private offer to the correct Salesforce record.
Renewal Offer TypeSalesforce FieldIndicates whether the offer is new or a renewal.
Product IDSalesforce Field (Suger Product Id)Maps the Suger product to the AWS listing product ID. Required for AWS to recognize which listing the offer belongs to.
Offer NameExpression: {{ .Name }} - {{ .Account.Name }}Defines the custom name for the offer as it appears in AWS Marketplace. Usually combines Opportunity and Account names.
Buyer AWS Account IDSalesforce FieldThe buyer’s AWS Account ID — needed so AWS can associate and allow that buyer to view and accept the private offer.
ContactsSalesforce Field / Manual EntryContact names and emails of people who should be notified when the offer is ready. Can include the Opportunity owner and additional internal contacts (for example, {{ .Owner.Name }}, {{ .Owner.Email }}, or manually added users like your teammate).
EULA TypeSalesforce FieldSpecifies which End User License Agreement (EULA) to attach — for example, “Standard AWS Terms” or a custom EULA.
Offer Expiry DateSalesforce FieldThe date before which the offer must be accepted, or it expires (format: YYYY-MM-DD).
Offer End DateSalesforce FieldThe date when the offer will officially end or expire (format: YYYY-MM-DD).
Start DateSalesforce FieldThe start date for the offer (by default, the acceptance date).
Script (Optional)Custom ScriptUsed to fill any remaining fields not mapped above. Optional but useful for automation or custom rules.

Troubleshooting

IssuePossible causeResolution
No New Offer button visible on the opportunitySuger permission set not assigned, or the Suger widget is not on the pageCheck your permission set assignment, and add the widget if it’s missing.
Product list is emptyNo products have been set up in Suger, or your permission set restricts which clouds you can seeConfirm that products exist in the Suger Console. A cloud-specific permission set only shows products for that cloud.
Form fields are blank — not pre-filled from the opportunityField mapping has not been configuredField mapping is an optional admin setup. Contact your Salesforce admin to configure it.
Copy Offer URL button does nothing after the offer is createdThe marketplace hasn’t finished processing the offer yetWait 3–5 minutes, then refresh the page. The URL appears once the marketplace confirms the offer.
Offer was created but doesn’t appear on the opportunitySync between Suger and Salesforce is delayedOffer records sync on a schedule. Refresh after a few minutes. If it still doesn’t appear, check the Suger Console to confirm the offer was created successfully.
Unable to open EULA when you click an offer’s EULAThe browser blocked the tab the EULA opens in, or Suger could not return a current download linkFor Allow popups for Salesforce, then try again., allow pop-ups for your Salesforce domain and click the EULA again. For The EULA download link is unavailable. Please try again., try again in a moment, and contact support@suger.io if it keeps failing.
Invalid offerCould not determine the offer being replaced. Reload the entitlement and try again. — when you create a GCP replacement (amendment) offerSuger could not tell which GCP offer the new one replaces: neither the entitlement nor its offer names itReload the entitlement and create the replacement again. If the message persists, contact support@suger.io.

Frequently asked questions

Can I create offers for AWS, Azure, and GCP from the same place?

Yes — as long as you have products set up for each cloud in Suger and the right permission set assigned. The product selector in the offer form shows products across all clouds you have access to.

Can I create an Agreement-Based Offer (ABO) from Salesforce?

Yes. Agreement-Based Offers are supported from Salesforce — you don’t need to use the Suger Console for this.

What is field mapping and do I need it?

Field mapping is an optional configuration that automatically pre-fills offer form fields with data from the Salesforce opportunity — like buyer name, contract value, or close date. Your Salesforce admin sets this up. You can still create offers without it, but you’ll need to fill in all fields manually.

The offer was created successfully but the buyer can’t find the link. What do I do?

Open the offer record in Salesforce and click Copy Offer URL, then send that link directly to the buyer. Make sure at least 3–5 minutes have passed since the offer was created, otherwise the URL may not be available yet.

Will the offer show up in the Suger Console too?

Yes. Any offer created from Salesforce is also visible in the Suger Console under your offers list.

Dimension-tag discounts (GCP, AWS, Azure)

When your organization has dimension tagging enabled (configured in the Suger web console), the discount step of a private offer shows a tag-based discount panel in place of the per-dimension rate table, for GCP, AWS, and Azure offers:

  • Build a rule from tag conditions (e.g. region contains us-east) and apply one discount to every matching dimension at once.
  • Apply a saved discount group from your org library, then set its discount %.
  • Override individual dimensions, and set a default for everything untagged.
  • The dimension list is searchable and paginated, so it stays responsive even for products with many dimensions.

GCP amendment (replacement) offers. Tag-based discounts are no longer limited to new offers. A GCP amendment offer priced postpay shows the same tag-discount panel, and reopening one re-applies the tag rules that were saved with it rather than flattening them back to per-dimension rates.

Configuration rule library. The discount panel has a rule library modal for reusing rules already saved in your org: select rules individually or with a select-all control, and a rule already applied to this offer carries an Applied badge so you do not add it twice.

Percent vs. Absolute pricing (AWS & Azure)

AWS and Azure offers can price a dimension either as a percentage off the product list rate or as an absolute negotiated price. A Percent / Absolute toggle switches between the two faces without losing the entered values:

  • Percent — the tag-filter discount panel; the final rate is list × (1 − discount%).
  • Absolute — a flat fixed-price editor; you enter the negotiated price directly and the panel shows the equivalent discount for reference.

When you reopen a hand-priced (legacy) offer whose rates differ from the current product list, it opens in Absolute so your negotiated prices are preserved exactly.

Azure per-plan configuration

Azure offers configure discounts per plan: each absolute-priced plan gets its own collapsible section, so plans that share a meter can be discounted independently, and a single offer can mix percentage plans with absolute plans.

For GCP prepay offers with multiple installments, each editable installment is configured independently; already-charged (locked) installments are shown read-only and are never changed.

Dimension tagging does not apply to AWS Machine Learning, AWS Professional Service, AWS Reseller, or Azure Application / Virtual Machine offers — those keep their standard pricing.

Any user who can create an offer can also save a rule as a reusable discount group to the org library. Applying discounts to the current offer never requires saving a group.

Spotted something wrong or out of date on this page? Tell us and we'll correct it.