Welcome to my blog. In this blog I will write about music, technology, sociology, data, and personal philosophy. Actually, it will probably be a hodge-podge of things. Enjoy!
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.
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.
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!
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.
If I were a recipe blogger, I’d probably write about how I got into a snuggly sweater and curled up with a cup of tea and lovely set of Salesforce support docs to set up Email-to-Case this afternoon.
But I’m not that person, so I’ll just start writing.
The Business Problem
We needed a way to collect internal IT support requests. We used to have a a technology request form, but it was awkward to point someone to a form every time they had a simple question.
How We Solved It
We set up email-to-case to solve this issue. This was up and running in a few hours, which is a testament to Salesforce’s help docs and the awesome community.
In this post, I will detail some funny barriers I ran into setting up the creation of the support cases. We are currently trying to figure out how to communicate with users (e.g. case comments, carrier pigeon, etc.)
The way email-to-case works is that users send to an actual email address such as email@example.com. You have your IT department set up forwarding so that when a person emails that address, the email is forwarded to a special Salesforce email (e.g. firstname.lastname@example.org), and that creates a case.
There are a few options that you can set up on Email-to-Case, such as default owner, what to do with files, and domains and email addresses that are allowed to create cases.
The main advantage to Email-to-Case is that it’s more similar to how someone might communicate with another person than, say, filling out a lengthy form.
The disadvantage is that we don’t capture as much data for routing purposes. For instance, moving forward, my manager and I will split up the systems we administer. When there is just an email (rather than a series of picklists), there is some manual case transferring that needs to occur.
As pre-work, I:
- Created an organization support email address – let’s say it’s called email@example.com. I imagine this could also work with a listserv but I didn’t do it that way.
- Created a special record type called “Tech Request”
- Created each user as a contact in Salesforce with their company email in the email field (because of the way Cases work, this step was necessary)
I had never set up email-to-case before. I used the Salesforce help documentation to set this up so I won’t spend too much time detailing that.
I did run into a few hiccups along the way which I would like to share:
- At first I was not able to verify the Salesforce email through Gmail. When you set up email forwarding through Gmail, there is an extra verification step. The system sends an email to the recipient email (so that would be firstname.lastname@example.org). Since that’s not a real email, this took some Googling. I eventually found this help article to set up Email Snapshots. I set up an email snapshot for that same email@example.com address and that allowed me to see my verification code.
- I accidentally created a recursive loop by creating a queue with the same email address as we were using for help requests (firstname.lastname@example.org), enabling email on it, and auto-assigning to this queue. Don’t do this.
- Email signatures were looking very ugly and clunky when the cases were coming in. I fixed this by creating a process builder on Case that removes everything after the “–“:
AND(Not(Isblank([Case].RecordTypeId)),[Case].RecordType.Name = "Tech Request",ISNEW(),CONTAINS([Case].Description ,"-- "))
2. Field Update:
This will glitch out if someone includes “– ” in the body of their ticket. I also don’t know if it works anywhere except Gmail. But good enough. #rogueadmin
Next, we need to figure out a process for supporting users that is intuitive but also helps us track our work. Maybe we will even implement support metrics. Maybe there is a Service Cloud Cert in my future? Okay, I shouldn’t get ahead of myself.
Okay, I admit… that was a clickbait-y title. I am feeling dramatic tonight.
Five years ago, I believed I needed a plan. I was working in a sales coordinator role at a startup but I knew I didn’t want to go into sales, so it felt dead-end.
I had no focus, but I felt this panicked urge to transition? What would I do next? What if I just ended up in the same place, doing the same job my whole life? That would be terrible, right?
I remember having a sheet of paper with 5 very different jobs (from copywriter to data analyst) with pro’s and con’s of each. I had no focus and created a lot of suffering for myself.
Around that time I read The Start-up of You, which mentioned making loose plans but also being flexible (“riding waves”). That advice stayed with me.
Fast forward to today. This mindset has served me well. It taught me to listen.
I was able to break into tech by listening to some sound career advice from a trusted colleague. Since then I have pursued volunteer opportunities just because they seem interesting to me, and I have listened to my instincts on when to move on from a commitment as well. I have learned to pursue what excites me; this includes leaving a Masters program that I felt didn’t align with my personality and starting one that is the perfect mix of my interests (a sociology degree with an analytics focus.)
My anxiety and intense desire to plan everything in my life sometimes causes me to want to burn everything to the ground and start over. But I am slowly learning to be okay with uncertainty and simply enjoy where I am. Surrendering and listening. Connecting and growing.
In fact, today, I would go as far as to say that there are some jobs that I wouldn’t mind doing my whole life. I have always thought that I should have direct reports by a certain age, be a VP by a certain age, etc. This feels like a product of the dark side of Lean In culture and #girlboss grind culture. I was pursuing goals for the wrong reasons.
Today, I am whole as myself. I am happy where I am.
When I started this blog I decided to try writing every day for 30 days. I missed Sunday the 15th because I was out exploring a museum with friends and then on various virtual hangouts.
Then I delved into a new knitting project, a hat for my best friend.
This was all time well-spent I think.
In the past, my pursuit of perfection paradoxically caused me to fail (pardon my annoying alliteration). For instance, if I missed a post I developed a mental block and stopped. Or if my grammar was not perfect or the graphics were not beautiful, I would start to resent my work.
Today I have compassion for myself. Today I strive for a slow burn – a consistent stream of ideas with some margin for rest and focus on other things – instead of an explosion of energy and motivation followed by radio silence.
This evening I spent some time thinking about how my life has changed in the last year, what I have grown to care about, and, in turn, what I may want to write about. A few ideas that came to mind outside of Salesforce and nonprofit technology are:
- Spirituality and my relationship to a higher power
- Dyspraxia/neurodivergence and learning self-acceptance
- Women in country radio – why aren’t there many?
- Codependency and how it is engrained in our culture
- The importance of moderation
- Setting goals and rolling with the punches, how to balance
- Self-care is doing laundry
- Sometimes spending money is okay!
- Cognitive dissonance: tech and border patrol
- also maybe sharing some poetry?!
If any of these sound cool, do let me know and I’ll focus my attention on those topics first.
In January of this year, I decided to start cooking for myself. I honestly don’t remember how I fed myself before. Maybe lots of trips to the WholeFoods hot bar. Yeah, that checks out.
I had signed up for Workweek Lunch (WWL) months before. WWL is a subscription meal prep service that provides yummy recipes that are fridge and microwave friendly.
Around January, I finally decided to start using my subscription and learned how to cook a few basic meals including vegetarian stuffed peppers, fish tacos, and chicken tikka masala. These recipes taught me a few skills such as how to make lentils, how to cook fish, and how to cut meat uniformly.
A few learnings:
- Meal selection
- It’s okay to make super basic meals. My go-to during the pandemic was sautéed black beans with cumin and vegetables.
- Find foods you like when you go out to eat and try to recreate them at home.
- The act of cooking
- Clean up as you cook.
- Taste as you cook.
- Read the recipe beforehand to understand what tasks are grouped together (cooking is basically project management)
- Prep ingredients beforehand by cutting vegetables and measuring out liquids and spices. This makes cooking less chaotic.
- Make everything twice. The first time, write out your learnings.
Cooking is one of the only tasks that completely engrosses my mind. I need to be present and focus on the task at hand, while being flexible and adjusting flavors.
Overall, working from home during the pandemic has been so helpful to my eating habits. I have been able to cook or reheat every meal and feeding myself has become a special self-care ritual.
I am thankful for this opportunity to work from home and have developed a new appreciation for food.
Today’s topic is mobile giving.
Mobile giving is an important tool for a nonprofit organization’s individual giving strategy. According to this article at Nonprofit Source:
- 25% of donors complete their donations on mobile devices
- 51% of people who visit a nonprofit’s website do so from a mobile device
Mobile giving can be separated into a few different areas, such as:
- Text-to-Give/Donate (SMS Donations) – Texting a keyword to a phone number to give money. Both options are great for events, virtual and in-person alike.
- Scan to Give – Scan a QR code that leads to a donation form.
- Outbound SMS – SMS serves as a mass communication channel similar to email. It may convey information or have a call-to-action to donate. Retail stores often use this to give discounts and share sales.
Today, I am focusing on SMS Donations. In a future post, I may detail how one might set this up in Salesforce using an external (paid) tool.
Text-to-Give versus Text-to-Donate
When choosing a provider
Text-to-Give means texting a keyword to a phone number and the donation being added to your cellphone bill.
- Simple experience – one step and no forms.
- Does not require Internet access, only cell service.
- Presumably less cart abandonment since there’s just one step.
- Works in pre-determined small amounts, so giving capacity is limited.
- Delay in receiving the funds.
- Donor data can be sparse, may need to set up flows to get additional data later.
- Can be costly – important to make sure there is ROI here.
- Need to use an external provider, such as Mobile Giving Foundation.
Text-to-Donate means texting a keyword to a phone number and receiving a link to a mobile-responsive donation form via SMS. This form can be accessed via a browser.
- Richer donor data.
- Can donate any amount.
- Can get funds more quickly since they come in through a regular payment processor.
- Need to be connected to Wifi or use data.
- More steps for the donor.
- If the donor thinks that the functionality is like text-to-give, they may think that by texting, they have already made the donation. This can be remedied to some extent by writing clear copy, but there will always be people who are just not paying attention.
Options for Implementation:
- Text-to-Give Software: Text-to-give software is available. We were impressed by Zoomgive.
- Pro: Likely provides analytics, and attractive mobile-first donation forms. They know mobile-first best practices and are mobile-first.
- Con: Requires integration with CRM. Also sometimes not a lot of room for form customization (e.g. adding tribute options). Finally, there are likely fees associated so the ROI needs to make this option “worth it”.
- Salesforce SMS and Donation Form: Use an SMS provider (we had SMS Magic for other purposes) to create a keyword automation that sends donor a mobile-responsive donation form (we use Formstack right now)
- Pro: Easy integration into Salesforce for donation logging, since you are using an existing donation form. Inexpensive.
- Con: May need automation chops, depending on which SMS tool you use. Also can be clunkier than an out-of-box solution.
- Another SMS tool and Donation Form – We once used Mobomix and our regular donation form. We purchased some SMS credits and a keyword for $10/month and were off to the races.
- Pro: Inexpensive. Easy-to-implement tool. Includes short code (see caveats below).
- Con: Sometimes you may not get the keyword you want. Also, you are sharing a short-code phone number with other companies.
A Quick Note on Short Codes
Short codes are 5-6-digit phone numbers like “55055”. They are very convenient for text-to-give and mass communication purposes, compared to long toll-free numbers like 1-888-230-1204. They are easier for the donor to type, have higher message throughput, and can be customized to a brand.
However, there are downsides to the short codes. To get a dedicated short code for your company can cost up to $12,000 per year. Many companies share short codes (for instance, a restaurant might have the same short code as a clothing store.). Also, cell phone carriers are getting stricter about short code spam and urging SMS marketers to switch to toll-free long codes.
Text-to-Give and Text-to-Donate both have pros and cons, and the decision of one over the other depends on your use case and budget.
Thanks for reading. If this was helpful, would love to hear from you! And feel free to send me any questions, comments, or corrections.
The Business Problem
I inherited a mature Salesforce org. I am always finding new surprises – quirks and automations that make my job full of ~wonder~.
Today I ran into this issue with our online donations coming in through Formstack:
The value was supposed to be “Completed,” but an automation (process builder or workflow rule) was changing it back to “Required.” Quelle horreur!
How I Solved It
I created a validation rule that did not allow the status to be changed to “Required.” Here is the logic. The Follow_up__c field is the field that’s labeled “Tax Letter Status.”
I made the error message “cant change status” and activated the rule.
Then I filled out our donation form on our website.
It gave me this error:
From this I knew exactly which process is interfering.
I removed the node of the Process Builder process that was changing the value back to Required. I knew I could do this because it was redundant – “Required” is already the default value for this custom field on the opportunity.
Then I activated the new version of the process and deactivated my validation rule.
The result was successful:
- It’s important to do brute force tasks like this in Sandbox so that they don’t impact the business. That said, I did this test in production because I don’t have a Sandbox version of our donation form. Do as I say, not as I do 🙂
- It’s also important to test that everything is working just fine after you remove an automation completely (i.e. perform regression testing.)
Any day when an admin discovers something that’s old and obsolete is a good day. Onward!
Today I’m writing about how to use multiselect picklists in an effective way using Salesforce or Excel.
The Business Problem
We took a survey of constituents. It integrated into Salesforce and populated a multi-select picklist. Let’s say that picklist was called “Fruits” and showed a survey participant’s favorite fruits.
This report is…okay. We can see that apples are popular by eyeballing the report. But when we try to count how many people selected each fruit, we run into a bit of an issue.
So we need another way.
We can solve this issue ~for free~ in two ways:
- The first method involves creating formula fields in Salesforce.
- Benefit: The data will always be current and accurate.
- Drawback: If you have many options and many multi-select picklists, you can run out of fields pretty quickly.
- Best for when: You don’t have lots of options, you need to see aggregated data in realtime (in a dashboard or report)
- The second method involves Excel.
- Benefit: You don’t waste Salesforce fields.
- Drawback: You have to do some periodic copying and pasting if you want live data; can’t create dashboards easily, etc.
- Best when: there are lots of options, the survey period is over, you just need raw data and don’t need dashboards
Solution 1: Salesforce Fields
The idea is to create a field for each multiselect picklist option, per this help article.
I created a formula checkbox field because they are visually appealing and can be summed easily. The formula is as follows:
if(includes( Fruits__c ,"Oranges"),true,false)
The result is something like this:
Solution 2: Excel
The second option would be to export the results and use formulas in Excel to populate columns for each answer choice.
First, I export my report results to Excel.
Then, I find all of the multiselect options. I go to the field in Setup and click Printable View. I copy this list using Cmd/Ctrl+C.
Then, I create a new tab in my Excel spreadsheet. I paste the list into that tab.
Next, I go back to the original tab and use the Transpose function in cell C1 to list out the options horizontally across the header row.
Then I used a FIND formula in cell C2 to figure out if cell B2 had the word “Apples” in it. This is probably a total kludge, so if there’s a more efficient way to do it please let me know:
This is saying that if it finds the word “Apples” in the B column at any position (position > 0), return 1. If not, return 0. I used IFERROR because it gave me an error when nothing was found. This is probably because I am an Excel noob. But hey, it works.
The $’s are there so that I can drag the formula into the other columns and it will still work – the correct row and column “sticks” and other data is dynamic. So here’s the final product:
Now we can do cool stuff like sum them up per column and even create data visualizations.
These solutions turn something virtually unusable into something a little less unusable. Enjoy.
PS: I’m pretty sure another option would be to feed this data into Tableau and create formulas that way. But I don’t have Tableau. If someone wants to donate a license to me for the sake of the blog, LMK.