I have [refunded / free upgrade / given some other bonus] your account. We will also make it a priority to [describe how we will improve] to make sure this doesn't happen to anyone else.
Please let me know if there is anything else we can do to make this right or if you have something else to tell us. You can contact me by email me@example.com or phone $phone_number. Those are direct to me personally, not to our helpdesk.
Best regards
$me
I'm not keen on the conciliatory tone and going straight to a 'bribe' of a refund/offer/etc, but in some markets that could work. If I had it as a response I'd feel like I was getting a brush-off rather than someone was trying to engage with me and fix my problem. If someone is willing to go to the effort of making a complaint without asking for a refund then they're expressing an interest in continuing the relationship; a refund is often seen as "we don't want your custom so we're paying you to go away." Like I said though, it's very dependent on the market.
Generally I think that'd work for the majority of free users of a service. For paying customers, though, you sort of have to triage between minor complaints and ones that will lose you a customer quickly if you don't look like you're solving it.
I have a cron job that fires off a Perl script at 8:45 a.m. every Monday morning that composes that e-mail and sends it off for me.
On the rare occasion that I was on vacation the previous week (and forgot to disable it), I just text our payroll lady and tell her to "ignore that e-mail, I was on vacation last week".
She knows it's automated and she doesn't care. She's required to receive an e-mail from me before she pays me and that satisfies her requirements. The boss knows too, he just shook his head and laughed when I told him about it.
It sorta reminds me of how, when a "measure productivity by number of tickets closed" policy gets enacted, everyone just starts creating tickets for every menial thing they do.
My second favorite is the one that runs once an hour, deleting any IP addressing / DHCP lease / similar data older than 24 hours (I work for an ISP).
Sorry, IP-Echelon, the company policy (which I wrote and enacted) says we don't keep that (IP <-> User) data for more than a day, so I can't "ensure the user and/or IP address owner refrains from future use and sharing" because I don't know and can't tell who it was.
https://www.theguardian.com/uk-news/2016/aug/17/two-g4s-poli...
I had a client who did this and so I started logging everything, pasting the commits etc. with the start and end timestamp of each group of actions (e.g. "created X table, met these issues, solved them like this").
Then I looked at the log and realised I was putting in way too many hours compared to the contract because I wanted to get the job done well, and cut back to the hours they were paying for.
The same economy system is also used for project management. I also have a script to download and parse the economy data for a project and present it to me in a meaningful manner, which means I pretty much never have to actually use our internal economy system.
More serious, I have a script that uses gitlab and gitlabci that integrates it with FDroid repo and builds and publishes .apk on internal FDroid repo. Each git branch, tag and release has its own publication in the repo where everyone can test the app, also easy to find regressions by using the app before we use git bisect.
[0]: https://github.com/fastlane/fastlane/tree/master/snapshot#re... [1]: https://fastlane.tools/
For each file, it would diff the original version with the last version committed against the ticket, and pop the diffs up sequentially in Vim (IE, one end-to-end diff for each source file).
I'm sure there's a better way, but this worked well enough at the time.
The are several nice reasons to use or not use slack, but this is my personal reason why i have a slack all for myself.
Slack is okay and there are some really good bots for it.
But everyone jumps on that train and so for every good integration there are 20 bad ones, that spam your channel with stuff no one needs to know :\
Takes a bit time to find the good things.
The only requirement is to remember to prepare the coffee machine the day before, but that hasn't been a problem so far.
The next few steps is to upload these things to Google Drive for the clients.
side project - some stuff to import customer data dumps into the db quickly. Not quite self-service yet, but getting there.
After that, I would say the script that updates dependencies in all our projects and make merge requests on gitlab if anything has been updated.