In a large pot, combine the turkey broth, turkey neck, heart, and gizzard. Bring to a boil over medium-high heat, then reduce the heat to low. Cover and simmer for 1½ to 2 hours until the meat is tender. If using the liver, add it during the final 20 to 30 minutes of cooking.
Remove the turkey neck and giblets from the broth. Once cool enough to handle, remove the meat from the neck and finely chop the neck meat and giblets. Set aside. Keep the broth warm.
While the turkey neck is simmering, melt the butter in a large saucepan over medium heat. Add the chopped onion and celery and cook for 6 to 8 minutes, stirring occasionally, until softened and lightly golden.
Sprinkle the flour over the vegetables and whisk constantly for 2 to 3 minutes to cook out the raw flour taste.
Gradually whisk the warm turkey broth into the flour mixture a little at a time until smooth. Add the turkey drippings and black pepper, whisking until fully combined.
Bring the gravy to a gentle simmer and cook for 8 to 10 minutes, stirring frequently, until it reaches your desired consistency.
For a silky smooth gravy, blend the gravy with an immersion blender or carefully transfer it to a blender in batches. Taste and season with salt and additional pepper as needed.
My grandma never wasted anything and said a few lumps were good for us. I had no idea what the lumps were. If desired, add the chopped turkey neck meat and giblets to the gravy and heat to serve if necessary.
Serve the gravy hot over roasted turkey, mashed potatoes, stuffing, biscuits, or your favorite holiday side dishes.