MT-ing My Head

Welcome to my soapbox of Salesforce technical writing, music, and miscellaneous stuff

Welcome — November 23, 2020
Thoughts on FormAssembly — February 22, 2021

Thoughts on FormAssembly

FormAssembly is a go-to tool for many Salesforce partners. It allows people to make forms, both pulling data from Salesforce and also updating Salesforce. I want to quickly review what I think is good about this tool and what can be improved upon.

The Good

  • I love how customizable it is – it’s so easy to adjust the look and feel of the form with either a theme or CSS.
  • Functionality-wise you can do more with Javascript. As compared to Formstack, the ability to use Javascript is a huge plus here. They even give users example snippets of code.
  • Their support is AWESOME – super responsive by email and chat. They have gone above and beyond for me on multiple occasions and the reps are more like partners.
  • The prefill connector pulls data from Salesforce in a seamless manner by passing variables such as record IDs into the URL. In Formstack, you have to pass every field you want into the URL; FormAssembly just queries the database and “prefills” fields instead. This also allows for scalability; you can use one form for multiple purposes by conditionally showing or hiding information.
  • The repeater option – which allows you to a) pull in data from multiple records and b) create or update multiple records is very clever. We have used this to pull info from child objects on a one-to-many relationship – for instance, dates and times for modules (child) of a virtual event (parent). Or create many records at once (for instance, for guest lists for a benefit). You can even remove the submit button and use it to display information from your database using the pre-fill connector.
  • E-checks in FormAssembly/Authorize give us more payment options and flexibility for our donors. We created a form that allows us to collect money from a pledge, passing in the donation ID. Then the form updates fields on the record when the person pays.
    • Sub-point: You can save and pass Authorize.net transaction IDs into Salesforce records!! This is something Formstack cannot do.
  • The CSV import of picklist items that populates other fields. We used this to load the entire US school database into a form and populate fields like name, district, and address.

The Meh

  • The fact that this is based in Javascript can cause problems.
    • Learning curve or requirement to hire implementation team. Javascript is not normally in the skillset of a Salesforce admin, but it is a good skill to have.
    • The user’s browser must have Javascript enabled in order for the form to work properly. FormAssembly recommends adding a snippet of code that shows up when Javascript is not enabled, but this snippet should come with the platform in my opinion. There is inherent risk here otherwise.
  • On forms where you accept payment there is no native plugin for discount codes.
    • It’s also hard to discount to $0 and hide the credit card fields – you need Javascript for this.
  • The post submission connector is clunky at times. If I’m making an update, I’d love to be able to reference an existing value in Salesforce and then decide what to do – for instance, if it’s filled out already, don’t overwrite it with the new value. Also, there are some cases when the update/insert option doesn’t work for my use case and I have to do an update/insert in multiple steps instead.
  • I wish that FormAssembly had a Google Drive integration; any time I want to save files in a Google Drive I have to use Formstack.
  • The e-signature function is very sleek but there’s not a great way to report on signatures that have been “verified” through email; you have to go into each record to do that.
  • The WordPress plugin does not allow you to add fields into the URL, so we have had to use iFrames.

What’s the coolest thing you’ve done on FormAssembly? Tweet @ me at @ melanietolomeo!

Stuckness — January 30, 2021

Stuckness

Hello, dear ones.

I want to talk a bit about “stuckness” in my life and what gets me unstuck.

I’m hoping that being vulnerable about this helps others as well as myself. Capitalism criticisms aside, of course.

First, what does “stuck” look and feel like to me?

  • Shortness of breath and anxiety
  • Overwhelming amounts of content that cause me to shut down completely
  • A tendency to prioritize small tasks that I’m familiar with
  • Anger towards the current system
  • Self-sabotaging actions around diet and exercise that create a bigger state of “stuckness”

Second, what types of impending tasks get me “stuck”?

  • Household tasks that are a result of imperfect planning (e.g. food going bad) (shame-based)
  • Big, complex problems that I’ve never solved before (fear-based)
  • Major decisions about products, life changes (commitment-based)
  • Bugs that I created and now have to fix (shame-based)
  • Processes with multiple steps that require a lot of my memory (fear-based, shame-based)
  • Wanting to write documentation but not knowing where to put it (fear-based, commitment-based)

And what helps get me unstuck?

  • Setting a timer and working for just 5 minutes on the task
  • Drinking water (or meeting other physical needs that are making it hard to focus)
  • Typing or drawing out what I need to do in plain language, breaking it down into tasks
  • Talking the problem through with someone/sharing
  • Seeing how other people did it via Google, blogs, etc.
  • Asking explicitly for help – paid with consultants or free in the community
  • Thinking about something A LOT and then taking a walk or talking a shower
  • Seeing the task at hand as a mystery to be solved / conquered

This was super difficult to share, because via social media I always see people’s examples of consistency (e.g. endless certifications and promotions) and never see their challenges. But it’s helped me get a bit unstuck in some areas already. Thanks for reading. 🙂

NPSP Days: Week 1 — January 19, 2021

NPSP Days: Week 1

My “configure NPSP every day without having ever used the product” project is going pretty medicore/okay!

Week-in-Review

(January 10-17, 2021)

Logistics Moves and Observations

  • Made Firefox my dedicated browser for dev org configuration to avoid issues with installing managed packages, logins, etc. The last thing I need is to inadvertently install household accounts into my company’s production org :~)
  • Purchased a second monitor. Have had success with writing and reading documentation on one and configuring on another.
  • In retrospect, I would have started here instead of going right in and configuring. The slide deck on that site gives a great overview of features.
  • I’ve been keeping a Google document of my progress each day, benefits of NPSP, and documentation issues I’ve found.
  • It’s important to keep it simple by understanding what the feature does before diving in.
  • I decided that the easiest way to do this is to to act as if I am studying for the Nonprofit Cloud certification exam. In fact, I may or may not have signed up for the exam…

Configurations Made and Skills Learned

  • Set Up Batch Gift Entry (which I think is still relevant??? But can’t tell because Salesforce deprecates products pretty quickly)
  • Set Up Customizable Rollups
  • Hard Credit and Soft Credit Automation
  • Address Management
  • Installed and Configured Program Management Module (holy custom objects :x)
  • Accounting Subledger – What is it?! Why should I care?!

This Week’s Focuses

  • Engagement plans
  • Levels
  • Gift Entry
  • Recurring Donations
  • Payments
  • Getting through 8 hours of vids for real life consultants

Future Focuses

  • Campaigns and mailing lists
  • Case management
  • Reports workbook and common reports
Adding Google Calendar to My Mac’s Dock and The Value of Taking a Step Back — January 14, 2021

Adding Google Calendar to My Mac’s Dock and The Value of Taking a Step Back

I recently purchased a second monitor. For some reason, this felt like a decadent, hedonistic act to me, like buying Teslas for the police while education budgets get cut. It’s possible that I have just been inside too long, though. :~)

As a result of this purchase, I have started thinking more about ergonomics, productivity, and workflow. Mostly how to use each monitor. I decided it would be super helpful to see my daily calendar in one portion of the screen. Ideally, it would act more like an app than a browser window.

I’ll start by saying that I’m on a Mac and I have an aversion to Outlook. Additionally, I do like Apple’s Calendar app. It is clean-looking (like most Apple products) and it sits right on my dock. It doesn’t get lost in my endless tabs.

But there are downsides of using it, too. I prefer working in Google for a variety of reasons, including the cute graphics they put on my calendar and the ease of adding a Hangout to a meeting.

Today I decided to Google “Add Google Calendar to Dock on a Mac”. Within seconds I found a StackExchange article about how to do this and installed a program called Fluid. Fluid allows users to create an “App” out of any web link and add it to their dock.

I installed the software and, in five minutes, had a new icon on my dock.

Step 1: Install the software

You can install the software here: https://fluidapp.com/

Step 2: Create the App

Note: I used a custom icon because the favicon option didn’t work. The downside of this is that it’s statically saying it’s the 31st, instead of changing with the date like Apple Calendar does.

Step 3: Add to Dock

I added the icon to my dock. It’s not exactly transparent on the edges but good enough.

Google calendar icon in dock
Brand new Google calendar icon!
Now when I open it, it looks like an app and not a browser window! Won’t get lost in tabs! Hoorah!

This Fluid app has some other use cases as well. For instance, I can make “Apps” for my Salesforce CRM homepage or a list of common links I use. I can also have them launch when I turn on my computer.

I find it really valuable to take inventory of things that bother me about my setup at work and at home – whether it’s that I can’t see my little screen or I don’t know how to store a lint roller. I usually spend some time every month trying to fix these issues. I realize that with certain tasks, these small annoyances create a lot of avoidance and stress. Sometimes taking the time to Google something can prevent a lot of pain later.

I remember reading about this in The Happiness Project by Gretchen Rubin a few years ago. She mentions that although it’s common knowledge that spending excessively won’t bring true joy, sometimes spending money on tools to fix (or taking time to troubleshoot) day-to-day issues is extremely gratifying.

Do you have a small annoyance inventory? What small annoyance can you alleviate today?

Chronicles of Setting up NPSP from Scratch: Days 1 and 2 — January 7, 2021

Chronicles of Setting up NPSP from Scratch: Days 1 and 2

Hello readers,

Happy January / “end of ze world” week!

Wanted to share what I’m working on, outside of feeling existential dread.

My nonprofit org is using Salesforce but we are not on NPSP or Lightning. It is not ideal.

We are currently looking for a partner to do a needs assessment of our org. In order to deepen my understanding of NPSP and also “sell” this project internally, I have decided to make an attempt at setting up NPSP with minimal sample data. I have never used NPSP before so my only points of reference are Trailhead, Salesforce documentation, and being part of the NPSP Videography project.

Day 1 – Setup

Yesterday (January 6, 2021), I created a dev org and installed NPSP. Taking it slooooow.

Day 2 – The Basics

Today I created some record types that weren’t available in the installation. I also created a new user with a new profile that I can use for testing.

Then I noticed that there is a whole guide on configuration steps that I can draw from. I’m curious as to why this guide includes creation of buttons instead of actions but I assume that there’s a reason for that.

Challenges So Far

Now some observations on challenges so far…

Since I know the core Salesforce product and nonprofit terminology, NPSP is quite intuitive. However, I am having trouble staying focused, especially as I try to write out everything I do.

I started to think about why this type of task – reading instructions, making configurations, and documenting – is so daunting for me. I like printouts of instructions, but that’s not eco-friendly or space-friendly. I like pen and paper, but my handwriting is so bad and the output is something I would have to type later anyway. I have two screens, but that doesn’t feel like enough.

As someone who is (self-diagnosed) neurodivergent, I need some simpler ways of working. Perhaps I can display the documentation on my iPad. Perhaps I need to learn more Mac keyboard shortcuts in order to move from one screen to another.

I think what I’m learning about reducing clicks and being able to seamlessly switch between tasks (reading, writing, configuring) is going to help me in system design in the future.

2020 Review and 2021 Goals — January 3, 2021

2020 Review and 2021 Goals

Happy New Year, readers. Many of you are my personal friends and I am so happy that we are alive at the same time and can spend time together virtually. I am excited for the day when I can meet some of you in real life.

In reflecting, the year 2020 brought a lot of introspection, pain, and growth for me.

Some (unexpected) highlights:

  • Started this blog.
  • Cut my hair.
  • Quit drinking alcohol.
  • Went vegetarian.
  • Took singing lessons.
  • Was gifted a record player and started a record collection.
  • Completed 50% of my Masters program.
  • Learned to cook and found a few go-to meals.
  • Took up knitting again.

This year (2021) is going to be a maintenance year. In addition, I’d like to make the following changes:

  • Start making arrangements to live alone, without roommates, for the first time.
  • Learn more about technology (keeping this broad on purpose).
  • Finish most of the coursework in my program.
  • Find fun ways to move my body every day.

I know that the universe/Higher Power has my back.

I wish you all a safe, healthy, joyous, humorous year.

Me & a rock that says "Somebody somewhere loves you"
A rock we found while hiking yesterday.

Love,

Melanie

Sporadic Notes on Flow and Marketing Attribution — December 9, 2020

Sporadic Notes on Flow and Marketing Attribution

I’ve been working in Salesforce Flow…a lot. I am a novice but have really enjoyed learning about software development best practices through a point-and-click tool.

My use case has been the very simple (sarcasm) marketing problem of attribution.

We send out emails with the call to action to donate. We segment our audiences based on whether they’ve donated in the past year, previous years’ donations, etc. and send different campaigns to each segmented group. I’d like to be able to understand roughly how much money came from each campaign.

“Use campaign influence!” you say. However, it is clear as dirt to me how to set that up or what it even does, so I’m going to do this my way by creating a flow that will probably hit all the governor limits.

So, for starters/background, we use Cazoomi Syncapps to sync Mailchimp with Salesforce.

Here’s how it works:

  1. We send out an email to a group of people via Mailchimp. This segment could be created in Mailchimp or Cazoomi (which has a Salesforce > Mailchimp sync option)
  2. Cazoomi automatically creates a campaignand campaign members for each person who received the email in Salesforce.
  3. Cazoomi also syncs open and click rates into Salesforce

What Cazoomi doesn’t do is track conversions of donations. We have relied on Google Analytics to do this.

So here’s my flow building process…

  1. Describe the actions in English, as if a human was doing it.
    1. Start with a donation. Which donations are included? Just won ones coming in from online.
    2. Look to the donor name.
    3. See if the donor received any emails for this end-of-year campaign.
    4. See if those emails happened before the close date of the opportunity so that we can be somewhat confident of the attribution.
    5. Find the closest campaign member and update the donation/opportunity with that campaign.
  2. Translate the above notes to fields and limitations. For instance, for step #1, I filtered out anything that didn’t come in from online and wasn’t Closed Won.
  3. Build out the flow, keeping in mind limitations of the flow function and its quirks. Some notes I found were:
    1. LIMITATIONS:
      1. Within the GET function, I’d love to be able to query on multiple levels using dot notation. For instance, it would be great to be able to find all Campaign Members where the Parent Campaign is “End of Year Campaign”.
      2. I can’t find all of the campaign members and store them to a variable, and then find all of the campaign IDs and store them to a variable; I have to use a loop.
    2. TIPS:
      1. When I am building for one record, if you are planning to scale up the flow, a good hint is to actually create a record variable for that record. Then, when it comes time to edit the flow to perform on a group of records, attempt to delete that record variable. It will show you a list of everything you have to replace.
      2. Name the variables with what type they are (e.g. Updated_opps_collection or Initial_opp_single_var)
      3. In my flow, I had to use an integer variable to figure out the closest campaign date to the close date (without going over). If I change this flow to operate on multiple Donation records, I will need to clear this value with every iteration of the loop.
  4. Debug using the Debug option.
  5. Create a button that deploys the flow.
  6. Deploy using a change set.

This is my final solution (adapted to be a nightly scheduled flow, which I haven’t tested yet). In the automated Tips section of the flow it says that I shouldn’t be doing database queries within a loop but I’m not sure how to avoid that in this case:

I also tried to figure out how to get this attribution to happen in bulk from a campaign but kept running into SOQL query limits, so I am probably doing something wrong.

In a different post, I will explain my interpretation of each type of action in flow to try to help others decode it. Stay tuned.

Reflections on Gratitude, Healing, and Privilege — November 26, 2020

Reflections on Gratitude, Healing, and Privilege

It’s Thanksgiving, a holiday with controversial roots, marinated in colonialism and violence.

On the flip side, today has me reflecting on gratitude and how gratitude helps change the brain, heal trauma, and even fight capitalism.

Earlier this year, I went through something traumatic in my personal life, and the trauma was multiplied by the pandemic. I was willing to do anything to feel okay. Because of that, I sought out a support system, and someone in my new support system urged me to make gratitude lists.

At first, I was very turned off by the idea. To me, gratitude lists felt like the “psychology tool” equivalent of a “live, laugh, love” sign.

However, I love data and psychology, so I was drawn to the idea that gratitude changes your brain. Saying “thank you” to others, finding things to be grateful for, and appreciating qualities in others genuinely improves people’s quality of life.

The science of it (the affect on hormones like dopamine and serotonin, and how gratitude affects the nervous system) is in the second link below.

Gratefulness wheel!

Some musings on gratitude:

  • Sometimes people who grew up in chaos (e.g. having parents who are addicted to substances like alcohol or drugs or processes like work, sex, gambling or even anger) learn to thrive off of negative feelings. Our brains love repetitive patterns. Gratitude can help the brain get hooked on positive emotions.
  • For people who seek out spikes of “happy hormones” from external sources (Instagram Likes, anyone?), gratitude helps our bodies take that joy-making process in-house. This makes me think of, “Happiness is an inside job”
  • Gratitude fights toxic capitalism by helping us take inventory of what we have before searching for more. While in a state of gratitude, additional desires come from a place of abundance, not scarcity or suffering.
  • Words of gratitude should be used with care. For instance, other people’s misfortunes do not exist to become inspiration p*rn. Also, when trying to help a loved one, saying “at least you don’t–” or “be thankful that–” are not helpful ways to acknowledge their pain.
  • It’s hard to write about gratitude without acknowledging privilege. I have a lot of privilege (white, middle class, cisgender-passing, and educated.) I have never been in a place in my life where I couldn’t get my basic needs met. I imagine that in these situations, gratitude does help, but I’m not going to make a statement like “Everyone should be making gratitude lists.” That is out of my lane; I just know that gratitude is helpful to me.
  • Gratitude lists can look different for different people. The writer of the first article below says she asks herself every day “What did I do today that ‘future me’ will thank me for?” I love this because it shows each day as a way to nurture future versions of yourself.

Today I am in a group chat where we share our gratitudes every day. I enjoy reading others’ and they often spark fun conversations.

I have noticed that mine are similar from day to day, which for me means that I am building a life full of blessings.

References

How a Twist on Gratitude Journaling Helped My Recovery

The Neuroscience of Gratitude and How it Affects Anxiety and Grief

The Joys of Salesforce Admin Office Hours — November 24, 2020

The Joys of Salesforce Admin Office Hours

A few weeks ago, I put Office Hours on the calendar to discuss Salesforce, how a college professor might.

The goal of this hour is to create a relaxed space to talk about tech, hear people’s system woes and use cases, and conduct some training. It’s been a super enlightening, collaborative time so far!

Thank you to my wonderful coworker Michelle Shen for creating this graphic and inspiring this blog post.

My HQ office, like many others, went remote in early 2020. We no longer have sporadic meetings and space to catch up over coffee. This allows some open time to catch up and share what’s important to us right now.

This designated time has also had the unexpected benefit of helping my teammates see what others are working on and how their roles fit in with other people’s.

Plus, I can listen to users in a more personal setting than just via email / submitting tickets and really take the time dive into their issues with them. The people who show up want to learn about the business and the inner workings of the system, and I love to help them understand!

Highly recommend other admins to implement this.