Skip to content
Back to blog

The QCP workflow: pull, edit, diff, push (no copy/paste)

Once your org is authenticated and you have scripts in src/, CPQ DevKit™ for Salesforce gives you a clean daily loop: pull → edit → diff → push.

Pull scripts from Salesforce

  • CPQ DevKit™ for Salesforce: Pull QCP records from Salesforce downloads all SBQQ__CustomScript__c records into src/*.ts.
  • CPQ DevKit™ for Salesforce: Pull active file from Salesforce refreshes the currently open file with the org version.

Safe pulls with conflict prompts

If a local file exists and the remote code is different, the extension prompts you to choose how to proceed:

  • Backup the local file first (recommended)
  • Overwrite local with remote
  • Skip the file (keep local)
  • Apply the same choice for all conflicts

Backups are written to a date-stamped folder in the workspace root (example: 2026-01-20-local).

Push scripts to Salesforce

  • CPQ DevKit™ for Salesforce: Push QCP files to Salesforce lets you pick one or more local files to push.
  • CPQ DevKit™ for Salesforce: Push active file to Salesforce pushes the open file (saving it first if needed).

What happens on push

  • If a matching SBQQ__CustomScript__c record already exists, it is updated.
  • If not, the extension creates a new record.
  • If your org has duplicates with the same Name, the extension warns you—clean up duplicates to avoid pushing to the wrong record.

Diff local vs Salesforce

Use these when reviewing changes before pushing:

  • CPQ DevKit™ for Salesforce: Compare records and show differences (local ↔ any remote record)
  • CPQ DevKit™ for Salesforce: Compare active file with the Salesforce record (local ↔ its mapped remote record)

Useful “open” actions

  • CPQ DevKit™ for Salesforce: View transpiled code for active file opens SBQQ__TranspiledCode__c for the current record.
  • CPQ DevKit™ for Salesforce: View QCP record in Salesforce opens the record detail page in your org.

Push-on-save (optional)

If you want a tighter feedback loop, enable sfdcQcp.pushOnSave and you’ll be prompted to push when saving a src/*.ts file.