BLDR is a CLI application for Salesforce Marketing Cloud (SFMC). BLDR brings working with SFMC a bit closer to a GIT development workflow, while also incorporating the ability to use any GIT provider for version control.
In addition to a workflow tool, BLDR allows users to package assets to be stored in a single JSON file. This JSON file can be stored directly in your GIT repository, shared with a teammate or community member, who can then install/download your package. For more details on packaging/deploying BLDR packages see the documentation.
To view full BLDR documentation, visit getting-started.
node --version
git version
npm install -g @basetime/bldr-sfmc
-g
flag to be able to use this across multiple projectsnpm update -g @basetime/bldr-sfmc
If you run into permissions issues while installing bldr, you can run the install command as sudo npm install -g @basetime/bldr-sfmc
.
BLDRs enhanced secrity to handle the storing of your API Credentials is handled through the keytar library. As such, the keytar library uses a library called libsecret
to access the systems credential manager. Libsecret cannot be included as a dependency so you may need to install it prior to installing BLDR. Follow the instructions on the keytar npm page or try the below instructions to install the libsecret library.
MacOs
BLDR is configured so you can use it across as many SFMC instances as you require. The interactions with SFMC are completed using a Server-to-Server API Package set up within each SFMC Instance. It's recommended that you create an Installed Package specifically for the CLI that can be shared between you and your team members.
Settings > Setup > Platform Tools > Apps > Installed Packages
New
to create a new Package and name it bldr-cli
Add Component
to add a new API Component and select API Integration
and then Server-to-Server
or Web App
Web App
configurations, include https://bldr.io/cli/sfmc/authenticate/
as the Redirect URIAccess
and ensure that the Installed Package is provisioned for all desired Business UnitsScope | Access |
---|---|
Read, Write | |
Web | Read, Write |
Documents and Images | Read, Write |
Saved Content | Read, Write |
Automations | Read, Write |
Journeys | Read, Write |
List and Subscribers | Read |
Data Extensions | Read, Write |
File Locations | Read, Write |
Accounts | Read |
Web App Installed Packages
Web App Configurations will use the oAuth 2 authentication flow which adds an extra layer of security for your organization and the instance you are connecting with. When using the Web App configuration, BLDR will still need to encrypt and store the credentials in your default credential vault as they are needed to initiate the oAuth process.
To facilitate this flow, BLDR will:
https://bldr.io/cli/sfmc/authenticate/
which points to a Google Cloud functionWhy do we need the Cloud Function
SFMC Web and Public App Installed Packages enforce that all Redirect URIs use the https protocol rather than http. This is to ensure that the connection with the Redirect URI is a trusted source. BLDR, being a CLI application, requires the use of a temporary localhost server to receive the oAuth challenge code; by nature a localhost server cannot have the required certificates to enforce https so the function simply passes it along.
View the Cloud Function code here.
bldr config -n
Server-to-Server
or Web App
integrationYou and your organizations security are important. We've taken steps to ensure that the credentials you use for configurations are encrypted and stored securely. Credentials are stored using your machines default password storage (OSX Keychain Access or Windows Credential Manager).
For more information, visit security.
The goal of BLDR is to put effort and focus into the most used features and areas of SFMC that users are working in. CLI applications are a black-hole regarding understanding it's users and use-cases. We have implemented a basic analytics functionality that simply increments counts as various actions are taken. This functionality does not record any PII, User Data, or Configuration Data of any kind; it is simply a way to understand what parts of BLDR are being leveraged.
If you do not wish to have these metrics gathered as you use BLDR please run bldr config --analytics
to turn this functionality off. It can be toggled on/off at any time.
Analytics Gathered: