An alternative to a-la-carte support

The most common support service is for the client to buy a bucket of hours. Support tickets are priced by the hour, and once the bucket reaches 0, more hours are purchased.

While this approach technically works, you’re trading time for money.… Read the rest

The pains of a-la-carte support

I have a wonderful client that I’ve been working with for over a year.

As per my usual MO, the projects were always fixed price. This means I worked towards obtaining the project’s goal, and never submitted change orders.

As with all my projects, I offer a lifetime bug-free guarantee.… Read the rest

How prepared are you?

The world is a random place. One moment you could be working hard on a feature, and the next moment, the client asks you to drop everything and work on something else.

When I grew up, the boy scouts had the motto, “Be prepared”.… Read the rest

AGI and the future of work

There was a big ruckus recently about Marc Benoiff’s comment about using Agentforce to reduce headcount.

He’s quoted as saying, “I’ve reduced it [company headcount] from 9,000 heads to about 5,000, because I need less heads”.

Some are interpreting this as he fired 4000 people.… Read the rest

Should you vibe code a project or package?

As AI becomes more and more adept at writing code (I’m looking at you, Claude Code), it begs the question: can it be used for more than just proof of concepts?

Taking this idea to the extreme, a non-developer can prompt their way and build a project.… Read the rest

An architect is someone who…

While at Northeast Dreamin’ in Boston last week, the keynote speaker, Steve Baines, spoke about being a Salesforce architect.

One of his points was, “if you’re building trust and clarity – you’re an architect”.

The overall theme is, being an architect is more of a mindset than an official title. … Read the rest

Monitoring user adoption

Let’s dive a little deeper into user adoption, specifically monitoring.

One great way to keep track of whether users are actually using Salesforce is to build a bunch of reports.

Here are some for your consideration

  • User login frequency. Are people logging in on a frequent basis?
Read the rest

Improving user adoption

There are two moments when you can improve user adoption: before adoption actually begins, and after.

The best way to solve a problem is to avoid it completely.

This principle definitely applies to user adoption. If you can perform a “good enough” job with change management, then user adoption begins strong.… Read the rest

Is traditional CRM dying?

There are more and more posts on LinkedIn about how the traditional CRM (including Salesforce) is slowly dying.

The posts have similar themes:

  • Traditional CRMs are too focused on on sales team
  • Users aren’t updating data, leading to graveyards
  • AI is taking over everything

Some posts sarcastically suggest you to vibe code your own CRM (BTW, the term “vibe coding” means using AI to develop).… Read the rest

Northeast Dreamin 2025

On Sept 3, 2025, Northeast Dreamin will be held.

I went in 2023 and had a blast. Unfortunately I wasn’t able to make it to 2024, but I’m definitely going this year.

Unlike the previous two years, it’s being held in Boston, MA instead of Manchester, NH.… Read the rest

What AI should NOT replace, at least not yet

With each passing week, AI gets smarter and smarter.

Apex coding, formula building, general searching, and troubleshooting are currently well positioned to be completely superseded by AI.

However there’s one important thing that hasn’t been replaced just yet; your humanity.

As a Salesforce consultant, your career isn’t completely technical.… Read the rest

A more integrated case for AI and Salesforce

The recent examples provided on using AI and Salesforce are disconnected.

That is, you need to do something in Salesforce, so you provide all relevant information to an AI. It gives you an answer, and you implement it. But the AI doesn’t “see” your Salesforce instance and understand the entire context.… Read the rest

Another everyday use case for AI: search

Years ago, Google became a household name. It started as a noun and turned into a verb. You “googled” something when you wanted to search for it on the internet.

Fun fact #1: Google’s name comes from the word “googol”, which is the number 1 followed by 100 zeros
Fun fact #2: I used AI for this fact, not Google

Today, AI is overtaking, or already has overtaken, google searches.… Read the rest

Common, everyday use cases for AI

Aside from writing apex code, AI can be a helpful tool for Salesforce consultants.

Here are a few for your consideration:

Field labels
If you’re ever struggling to come up with a concise name for a field, AI can help.

For example, in a current project in which users complete a form, the answers need to be saved in fields.… Read the rest

Should you build a new flow or update an existing one?

As your Salesforce project evolves, you’ll eventually need to make enhancements. When it comes to flows, you have two options:

  1. Build a new flow to manage the new functionality
  2. Edit an existing flow and add the new functionality

Option 1 is a good choice if the change can be made in the existing flow without having to add any (or adding just a few) elements.… Read the rest

When building flows, think like a tester

If you’re a developer, you may be tempted to clean up apex code from time to time. This is because some other developers create what is called “spaghetti code”.

Spaghetti code is basically messy code that may work for a time, but incurs technical debt.… Read the rest

Here’s a flow naming convention for you

As with all things with labels, it’s a good idea to have a naming convention for your flows.

A proper convention allows you and your clients to find what they are looking for easily. It also makes things easier to support, and to create a sense of structure.… Read the rest

The basics of flow – naming conventions

Flows are a pivotal feature in Salesforce, and every good enough consultant needs to know how to use them effectively.

Let’s start with naming conventions. Each element in the flow needs a label. They should be clear, consistent, and concise. If more details are needed, place them in the description field.… Read the rest

Flow vs Omniscript: Which is better?

When building low-code automations in Salesforce, you have two options: Flow and Omniscript.

Flow was designed by Salesforce. As a result, more people are familiar with it. With nearly each release, it gets better and better, as more features are added.… Read the rest

Building flows: go down or go across?

Let’s say you design a subflow that attempts to find a contact. After several attempts, if a contact isn’t found, it creates one.

Each attempt tries to find a matching contact using different criterias. For example, find by

  1. Email address
  2. First and last name
  3. Last name and postal code/zip code
  4. Last name and birthdate

If attempt 1 doesn’t return any results, you move to attempt 2.… Read the rest

Does Salesforce perform a noop?

Here’s a question for you: When you update a field to its current value, what happens?

For example, let’s say you have a contact with a phone number of “123 456 7890”. Then you execute a flow that updates the phone number to “123 456 7890”.… Read the rest

Updating and deleting multiple records in a flow

Thanks again to everyone who responded to yesterday’s email about updating a record collection.

The most popular solution to test for > 0 records is to simply use a decision element with {Get_Contacts} Is Empty. This is simple and clean, and I’ll adopt this approach going forward.… Read the rest

How do you verify whether a record exists?

This email is more of a question than a comment. So I’m looking forward to your thoughts.

In flows, it’s common to verify whether a record exists before performing an action. For example, let’s say you need to update a contact if it exists, or create it if it doesn’t.… Read the rest

The somewhat useful “Update Existing Records” feature

In Salesforce flows, there’s a relatively new feature called “Update Existing Records”.

It’s only available in Create elements, and it allows you to update existing records instead of creating new ones. This effectively turns the create command into an upsert command.… Read the rest

You (probably) should learn how to program

I must admit, I’m using AI more and more these days. It helps me in numerous ways, but the majority of the time, it’s with development.

Gemini Pro is pretty good with apex coding. With a few prompts, it can create or edit code fairly easily and accurately.… Read the rest

An easier way to build Salesforce packages

When building a Salesforce package, there are two ways to create and maintain them: 1GP and 2GP.

1GP uses a development org as the source of truth. Most consultants are very familiar with this way of working. You typically start in a DEV sandbox for development, then migrate changes to a UAT sandbox for testing, and finally to production.… Read the rest