When I create an EmailServiceFunction in the scratch org and pull down to my local project I don't see the EmailServiceFunction I created reflected anywhere in the meta-data. Is this a change that can be pushed to a sandbox or production from a scratch org without an additional configuration? Is there documentation somewhere that details everything that typically is reflected in the metadata from a scratch org and can be pushed to a sandbox or production? Is this a problem I can overcome with the force:mdapi commands?
Yes, using force:mdapi:retrieve, you can do this.
<?xml version="1.0" encoding="utf-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>EmailServicesFunction</name> </types> <version>43.0</version> </Package>
sfdx force:mdapi:retrieve -u scratch-org-alias -k package.xml -r . unzip unpackaged.zip sfdx force:mdapi:convert -r unpackaged -d force-app