Enabling Transactable Marketplace Receive Partner Offers Org Preference
This skill configures the enableTransactableMarketplaceReceivePartnerOffers org preference via the TransactableMarketplacePrivateOfferSettings Metadata API type, which controls whether a Salesforce org is eligible to receive partner offers through the Transactable Marketplace. It is required for subscriber orgs that participate in the TM partner offer flow.
Scope
- In scope: Reading the current value of the pref, enabling or disabling it via Metadata API (
TransactableMarketplacePrivateOfferSettings), and verifying the change took effect. - Out of scope: Creating or managing partner offer records, configuring marketplace listings, or any Apex/trigger changes related to offer processing.
---
Required Inputs
- Target org alias or username: The org where the pref should be set. Ask if not provided.
- Desired state:
true(enable) orfalse(disable). Default:true.
---
Workflow
Phase 1 — Check current state
- Query the current preference value by running:
sf data query -q "SELECT Preference, Value FROM OrgPreference WHERE Preference = 'TransactableMarketplaceReceivePartnerOffers'" --target-org <alias> --use-tooling-api
If the record exists and Value = true, the pref is already enabled — confirm with the user before proceeding. If the query returns no rows, the pref is not yet set (defaults to false).
- Resolve the org's package directory to determine where to write metadata. Run this and use its output as
<packageDir>:
jq -r '.packageDirectories[0].path // "force-app/main/default"' sfdx-project.json
Phase 2 — Apply the preference
- Write the TransactableMarketplacePrivateOfferSettings metadata file — load
assets/org-pref-template.mdfor the exact XML structure, then write the file at:
<packageDir>/settings/TransactableMarketplacePrivateOffer.settings
Set <enableTransactableMarketplaceReceivePartnerOffers>true</enableTransactableMarketplaceReceivePartnerOffers> (or false if disabling).
- Deploy the metadata to the target org. Before running the deploy, confirm with the user:
- [ ] Confirmed the target org alias with the user (deploying to the wrong org is not easily reversible)
- [ ] Confirmed the desired state (
true/false) matches the user's intent
sf project deploy start --metadata TransactableMarketplacePrivateOfferSettings --target-org <alias>
Phase 3 — Verify
- Confirm the change by re-running the Tooling API query from step 1 and verifying the
Valuecolumn matches the desired state.
- Report to the user — see Output Expectations below.
---
Rules / Constraints
| Rule | Rationale |
|---|---|
| Always query the current value before writing metadata | Avoids unnecessary deploys and detects conflicting changes |
Use TransactableMarketplacePrivateOfferSettings as the metadata type | This is the concrete type registered in the platform for this pref, not the generic OrgPreferenceSettings |
The settings file must be named TransactableMarketplacePrivateOffer.settings | Metadata API requires the filename to match the settings node name |
Do not hardcode force-app/main/default/ | Always read sfdx-project.json for the actual package directory |
| Never deploy without confirming the org alias with the user | Deploying to the wrong org is not easily reversible |
---
Gotchas
| Issue | Resolution |
|---|---|
| Tooling API query returns no rows | Pref is unset (defaults to false). Safe to create a new settings file. |
Deploy fails with INVALID_TYPE | The metadata type name is TransactableMarketplacePrivateOfferSettings — check the --metadata flag value. |
| Deploy succeeds but value doesn't change | Another settings file in the project may be overriding this one. Search for other TransactableMarketplacePrivateOffer.settings files in the project. |
INSUFFICIENT_ACCESS_OR_READONLY on deploy | User running the deploy must have the "Modify All Data" or org preference admin permission in the target org. |
| Pref not visible in UI | enableTransactableMarketplaceReceivePartnerOffers is not surfaced in Setup UI — the Tooling API query is the only way to verify it. |
| Available from API version 67.0+ only | The type is available from API v67.0 — deploying against an older API version will fail. |
---
Output Expectations
After completing all phases, report:
Org: <alias>
Preference: enableTransactableMarketplaceReceivePartnerOffers
Previous value: <true|false|unset>
New value: <true|false>
File written: <packageDir>/settings/TransactableMarketplacePrivateOffer.settings
Deploy status: Success
---
Reference File Index
| File | When to read |
|---|---|
assets/org-pref-template.md | Phase 2, step 3 — use as the exact XML structure for the settings file |
examples/org-preference-settings.xml | To verify the generated file matches expected format |







