Trouble updating several Thingspeak channels from one Arduino

Hello,
I am in the process of monitoring 20 dht sensors with an Arduino Mega. I am attempting to send this data to the Thingspeak servers for later download and analysis.

byte mac[] = {0xXX, 0xA2, 0xXX, 0xXX, 0x17, 0xXX};
 char* writeAPIKey[] = {"XXXXXNEKDXXXXX3X\n" , "JJX6XXXXVFEXXN3V\n" , "0SGPXXXOIJUX9R7R\n" , "P9EU8T10PXXXXHU3\n" , "9V4QAXXXXXXXXVRD\n"};
 char ExtwriteAPIKey[] = {"QXXXXXXXXX4DK7YE\n"};
 char* ExtFields[] = { "field3=", "&field4="};

char thingSpeakAddress[] = "api.thingspeak.com";
char thingSpeakX[] = "X-THINGSPEAKAPIKEY: ";
char thingSpeakAPI[40];
const time_t updateThingSpeakInterval = 300;      // Time interval in seconds to update ThingSpeak

char* fields[]={"field1=", "&field2=", "&field3=", "&field4=", "&field5",
"&field6=","&field7=","&field8="};
char text[9] = "&status=";
char standard[35] = " ";
char transmission[150];

/////////////////////////////////////////////////////////////////////////////
void loop()
{
  Serial.println(F("This is the start of the repeat loop"));
  
 newtime = rtc.now();
 serialprinttime();
 
 if (newtime.unixtime() - lastConnectionTime.unixtime() > updateThingSpeakInterval)
 {
createtransmission();
}

void createtransmission()
{
  // Update ThingSpeak
if(!client.connected() )
  {
    Serial.println(F("This is the beginning of the create transmission"));
   for (int c = 0; c < 7 ; c ++)
    {
    strcat(transmission,fields[c]);
    strcat(transmission,channelzero[c]);
    }
    strcat(thingSpeakAPI, thingSpeakX);
    strcat(thingSpeakAPI, writeAPIKey[0]);
    Serial.print(F("Transmission string: "));
    Serial.println(transmission);
    Serial.print(F("Thingspeak API string: "));
    Serial.println(thingSpeakAPI);
    updateThingSpeak(transmission, thingSpeakAPI);
    memset(transmission, '\0',150);
    Serial.print(F("This should be a nulled out transmission string: "));
    Serial.println(transmission);
    Serial.println(F("This is the beginning of the second loop"));
    for (int c = 0; c < 7 ; c ++)
    {
    strcat(transmission,fields[c]);
    strcat(transmission,channelone[c]);
    }
    strcat(thingSpeakAPI, thingSpeakX);
    strcat(thingSpeakAPI, writeAPIKey[1]);
    Serial.println(transmission);
    Serial.println(thingSpeakAPI);
    updateThingSpeak(transmission, thingSpeakAPI);
    memset(transmission, '\0', 150);

void updateThingSpeak(String tsData, String API)
{
  if (client.connect(thingSpeakAddress, 80))
  {         
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print(API);
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(tsData.length());
    client.print("\n\n");

    client.print(tsData);
    
    
    
    if (client.connected())
    {
      Serial.println("Connecting to ThingSpeak...");
      Serial.println();
      
      failedCounter = 0;
    }
    else
    {
      failedCounter++;
  
      Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");   
      Serial.println();
    }
    
  }
  else
  {
    failedCounter++;
    
    Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");   
    Serial.println();
    
    lastConnectionTime = millis(); 
  }
}

I have tried to extract the relevant pieces of code. According to this post on the Thingspeak forum:

I need to use a different client for each channel. Ethernet doesn’t allow for 5 clients, plus I was wanting to use one for a UDP client for updating a RTC with NTP.

Thanks for looking.

Tim